小伙做网站,怎么制作公众号教程,广西壮族自治区成立于哪一年,网站建设三网online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展#xff1a;很多alter table的操作绕开了 table copying#xff0c;支持DML并发操作。一、online ddl的支持测试#xff1a;1、主键的增删主键添加#xff1a;支持online ddl#xff0c…online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展很多alter table的操作绕开了 table copying支持DML并发操作。一、online ddl的支持测试1、主键的增删主键添加支持online ddl加主键过程中支持 并发的DML主键删除:不支持online ddl删除主键过程需要copy table导致DML被阻塞2、索引的增删1)普通索引5.5使用新的逻辑(fast index creation)不再copy表(参数old_alter_table),加快的索引的创建和删除但是会阻塞DML可以select5.6中创建和删除索引不再阻塞dml2)unique索引同上3、字段的增删改新增(alter table test add hehe2 int default 100)5.5阻塞 DML支持select5.6支持并发DML删除(alter table test drop hehe2)5.5阻塞 DML支持select5.6支持并发DML修改只改字段名(alter table test change hehe2 hehe20 int default 100)5.5阻塞 DML支持select5.6支持online ddl并发DML修改字段类型(alter table test change hehe20 hehe2 varchar(100) default 100)5.5阻塞 DML支持select5.6不再支持online ddl二、新引入语法在5.6中alter table增加了新的语法ALGORITHM [] {DEFAULT|INPLACE|COPY}LOCK [] {DEFAULT|NONE|SHARED|EXCLUSIVE}ALGORITHMINPLACE 不copy tableCOPY copy tableDEFAULTLOCK:DEFAULT: MySQL自己选择锁定资源最少的方式NONE: 支持select和DMLSHARED 支持select不支持DMLEXCLUSIVE不支持select不支持DML可以借用这个新增语法测试是否alter table语句支持online DDL:新建一个表结构一样的表存储少量的数据root:3306:popoalter table test change hehe2 hehe20 int default 100 ,LOCKNONE;ERROR 1846 (0A000): LOCKNONE is not supported. Reason: Cannot change column type INPLACE. Try LOCKSHARED.根据提示这个字段类型修改的alter table不支持并发的DML操作root:3306:popoalter table test change hehe2 hehe20 int default 100, ALGORITHMinplace;ERROR 1846 (0A000): ALGORITHMINPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHMCOPY.同样 这个alter table 也需要copy table操作。三、online ddl相关参数和原理innodb_online_alter_log_max_sizeonline ddl的原理是mysql把在ddl时间内的所有的 插入更新和删除操作记录到一个日志文件 然后再把这些增量数据应用到相应的表上(等表上的事务完全释放后)这个临时日志文件的上限值由innodb_online_alter_log_max_size指定,每次扩展innodb_sort_buffer_size的大小 该参数如果太小有可能导致DDL失败这期间所有的未提交的并发DML操作都会回滚但是如果太大会可能会导致后DDL操作最后锁定表的时间更长(锁定表应用日志到表上)。 每一个变化的索引或者表都会分配一个。