mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
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,可以select
5.6中創建和刪除索引不再阻塞dml
2)unique索引
同上
3、字段的增刪改
新增:
(alter table test add hehe2 int default 100)
5.5阻塞 DML,支持select
5.6支持并發DML
刪除:
(alter table test drop hehe2)
5.5阻塞 DML,支持select
5.6支持并發DML
修改:
只改字段名:
(alter table test change hehe2 hehe20 int default '100')
5.5阻塞 DML,支持select
5.6支持online ddl,并發DML
修改字段類型:
(alter table test change hehe20 hehe2 varchar(100) default '100')
5.5阻塞 DML,支持select
5.6不再支持online ddl
二、新引入語法:
在5.6中,alter table增加了新的語法:
ALGORITHM [=] {DEFAULT|INPLACE|COPY}
LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
ALGORITHM:
INPLACE: 不copy table
COPY:? ? copy table
DEFAULT:
LOCK:
DEFAULT:? ? MySQL自己選擇鎖定資源最少的方式
NONE:? ? ? 支持select和DML
SHARED:? 支持select,不支持DML
EXCLUSIVE:不支持select,不支持DML
可以借用這個新增語法測試是否alter table語句支持online DDL:
新建一個表結構一樣的表,存儲少量的數據:
root:3306:popo>alter table test change hehe2 hehe20 int default '100' ,LOCK=NONE;
ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: Cannot change column type INPLACE. Try LOCK=SHARED.
根據提示,這個字段類型修改的alter table不支持并發的DML操作
root:3306:popo>alter table test change hehe2 hehe20 int default 100,? ALGORITHM=inplace;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
同樣 這個alter table 也需要copy table操作。
三、online ddl相關參數和原理:
innodb_online_alter_log_max_size
online ddl的原理是,mysql把在ddl時間內的所有的 插入,更新和刪除操作記錄到一個日志文件,?然后再把這些增量數據應用到相應的表上(等表上的事務完全釋放后),這個臨時日志文件的上限值由innodb_online_alter_log_max_size指定,每次擴展innodb_sort_buffer_size的大小 該參數如果太小有可能導致DDL失敗,這期間所有的未提交的并發DML操作都會回滾;但是如果太大會可能會導致后DDL操作最后鎖定表的時間更長(鎖定表,應用日志到表上)。?每一個變化的索引或者表都會分配一個。
總結
以上是生活随笔為你收集整理的mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【资料合集】阿里巴巴开源技术汇总——内含
 - 下一篇: EndNoteX9 使用笔记