mysql5.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
http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html
中的Table 14.5列出了詳細的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操作最後鎖定表的時間更長(鎖定表,應用日誌到表上)。
每一個變化的索引或者表都會分配一個。
參考:
http://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html
http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-examples.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18796236/viewspace-1818792/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL Online DDL--pt-online-change-schema測試MySql
- MySQL5.6支援哪些Online DDL操作MySql
- MySQL5.6 Online DDL線上狀態總結MySql
- mysql online ddl的演化MySql
- MySQL Online DDL 概述MySql
- Limitations of Online DDL for MySQLMITMySql
- MySQL DDL執行方式-Online DDL介紹MySql
- 軟體測試中的功能測試和非功能測試
- MySQL 5.7 Online DDL OverviewMySqlView
- MySQL Online DDL詳解MySql
- MySQL在其版本迭代後Online DDL功能發生了哪些變化?MySql
- MySQL 5.6 Online DDL.mdMySql
- MySQL online ddl 工具之pt-online-schema-changeMySql
- 【MySQL】online ddl 工具之pt-online-schema-changeMySql
- 功能測試
- 介面測試和功能測試的區別
- ORACLE11.2.0.3和MYSQL5.6 DDL比較OracleMySql
- mysql之 openark-kit online ddlMySql
- MySQL 5.7 online DDL特性介紹MySql
- 【MySQL】online ddl 思維導圖MySql
- 軟體測試中功能測試的測試工作流程
- 功能測試、自動化測試、效能測試的區別
- MySQL ONLINE DDL 和PT-ONLINE-SCHEMA-CHANGE對比MySql
- MySQL Online DDL的實現細節介紹MySql
- mysql的DDL操作對業務產生影響測試MySql
- 測試index online rebuild故障記錄IndexRebuild
- MySQL & MariaDB Online DDL 參考指南MySql
- 記錄一次 Online DDL 操作
- 門戶系統測試---功能測試
- 功能測試之審批流測試
- sync.RWMutex 功能的測試Mutex
- 軟體測試中的43個功能測試點(上)
- 軟體測試中的43個功能測試點(下)
- 功能測試吐槽
- 軟體測試之功能測試、效能測試經驗談
- 軟體功能測試包含了哪些測試專案?功能測試報告收費標準測試報告
- 功能開發的測試姿勢
- 軟體的功能性測試