表示 进入内容 16
Displaying posts with tag: Online DDL (reset)
MySQL Online DDL "Duplicate Key" 优化

MySQL 在执行 Online DDL 重建表的时候,可能会碰到 Duplicate Entry 错误,从而导致 DDL 中途失败。失败信息如下所示:

1
2
mysql> alter table tt add c3 int, algorithm=inplace;  
ERROR 1062 (23000): Duplicate entry '1' for key 'tt.uk_c2'

这是一个非常知名的问题,自从 MySQL-5.6 引入了 Online DDL 之后就一直存在。相关的Bug包括:

  • BUG#76895[1] Adding new column OR Drop column causes duplicate PK error
  • BUG#77572[2] The bogus duplicate key error in online ddl with incorrect key name
  • BUG#98600[3] Optimize table fails with duplicate entry on UNIQUE KEY
  • BUG#104626[4] Remove failure of Online ALTER because concurrent Duplicate entry.

BUG#76895[5]最早报告了这个问题。BUG#76895 上提到的是 Duplicate PRIMARY …

[获取更多]
MySQL数据库InnoDB存储引擎在线加字段实现原理详解

腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL。该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理。

1. GCS行格式

需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展。为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在线加字段功能是通过新增一种innodb行格式GCS(Game Cloud Storage)来实现,从而避免对其他格式造成影响。

阅读全文——共4741字

MySQL5.6 OnlineDDL对二级索引变更的影响

导读:本文是测试online DDL对表的二级索引的增删的影响。测试目的有以下几点:

(1):online DDL和旧机制的DDL 在二级索引变更方面的效率如何

(2):onlineDDL是否支持DML,查询并发

阅读全文——共12741字

MySQL5.6 Online DDL对全文索引变更

导读:

本文是onlineDDL 对Innodb全文索引的变更测试的。MySQL5.6手册中有这样的解释: (除非用户提供FTS_DOC_ID列,否则创建第一个全文索引的过程包含表的复制。

阅读全文——共7353字

MySQL5.6 OnLine DDL 对外键变更测试

导读:

本文是MySQL5.6 OnLine DDL 对外键变更操作的测试,测试目的: foreign_key_checks系统变量开启对增删外键约束的影响。

mysql> show variables like ‘%foreign_key_check%’;

阅读全文——共1652字

MySQL5.6 对列的变更Online DDL测试

导读:MySQL5.6 OnLine DDL 对列变更操作的测试,测试目的:对于列不同操作,Online DDL是否需要拷贝表以及允许DML,SELECT 并发。

下面测试使用测试案例 test_column,big_table,表定义是一致,结果集大小不同。

mysql> show create table test_column \G

阅读全文——共7479字

表示 进入内容 16