MySQL 常用DDL執行方式總結

chenfeng發表於2017-05-08
操作                                      支援方式                     Allow R/W                                   說明 
add/create index                           online                     允許讀寫                         當表上有FULLTEXT索引除外,需要鎖表,阻塞寫
 
add fulltext index                   in-place(5.6以上版本)          僅支援讀,阻塞寫                 建立表上第一個fulltext index用copy table方式,除非表上有FTS_DOC_ID列。之後建立fulltext index用in-place方式,經過測試驗證,第一次時5.6 innodb會隱含自動新增FTS_DOC_ID列,也就是5.6 都是in-place方式

drop index                                  online                    允許讀寫                        操作後設資料,不涉及表資料。所以很快,可以放心操作 
optimize table                              online                    允許讀寫                        當帶有fulltext index的表用copy table方式並且阻塞寫
 
alter table...engine=innodb                 online                    允許讀寫                        當帶有fulltext index的表用copy table方式並且阻塞寫
 
add column                                  online                    允許讀寫(增加自增列除外)        1、新增auto_increment列要鎖表,阻塞寫;2、雖採用online方式,但是表資料需要重新組織,所以增加列依然是昂貴的操作
 
drop column                                 online                    允許讀寫(增加自增列除外)        同add column,重新組織表資料,,昂貴的操作 
Rename a column                             online                    允許讀寫                        操作後設資料;不能改列的型別,否則就鎖表 
Reorder columns                             online                    允許讀寫                        重新組織表資料,昂貴的操作 
Make column NOT NULL                        online                    允許讀寫                        重新組織表資料,昂貴的操作 
Change data type of column                 copy table                 僅支援讀,阻塞寫                建立臨時表,複製表資料,昂貴的操作
Set default value for a column              online                    允許讀寫                        操作後設資料,因為default value儲存在frm檔案中,不涉及表資料。所以很快,可以放心操作
 
alter table xxx auto_increment=xx           online                    允許讀寫                        操作後設資料,不涉及表資料。所以很快,可以放心操作 
Add primary key                             online                    允許讀寫                        昂貴的操作
Convert character set                      copy table                 僅支援讀,阻塞寫                如果新字符集不同,需要重建表,昂貴的操作 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2138706/,如需轉載,請註明出處,否則將追究法律責任。

相關文章