paip.解決 資料庫mysql增加列 字段很慢添加字段很慢
mysql5.6 資料僅僅3w
alter table xxx add column yyy int default 0;
添加字段很慢,好幾份中都沒有好。。
[SQL] alter table grejx_def add column flag12 int default 0;
受影響的行: 0
不是那種lock–copoy–rewrite的方式.effeic row sh 0 ,為甚還是這麼慢的是??
Oracle 11g的快速加字段功能就是好啊..
資料結構紊亂蘭,隻要不個table 優化給挂走ok蘭。。
字謠0.3s走ok蘭..
作者 老哇的爪子 Attilax 艾龍, EMAIL:[email protected]
由于mysql線上ddl(加字段、加索引等修改表結構之類的操作)過程如下:
A.對表加鎖(表此時隻讀)
B.複制原表實體結構
C.修改表的實體結構
D.把原表資料導入中間表中,資料同步完後,鎖定中間表,并删除原表
E.rename中間表為原表
F.重新整理資料字典,并釋放鎖
添加字段很慢
alter table grejx_def add column flag int default 0;
Facebook數千台MySQL伺服器在過去增加個索引需要幾個月的滾動更新(後來他們自己開發了後面提到的工具,隻需要幾天)
在指令結束之後看看顯示“rows affected “的值。例如,這裡您可能會看到在做不同類型的DDL操作:
拷貝表結構,然後插入少量的資料。去修改表結構。看影響的行。如果為0,則表示不會拷貝中間表的方式
是percona推出的一個針對mysql線上ddl的工具
1:手動的建立好修改後的表結構 NEW_TAB。(比如新增字段,修改表字段類型。删除表字段,可以一并一次性搞定)
對于MyISAM表,您可以通過把myisam_sort_buffer_size系統變量設定到一個較高的值,來加快重新建立索引(該操作是變更 過程中速度最慢的一部分)的速度。
2: 選擇性的将舊表OLD_TAB資料插入到修改後的表。(這裡需要注意的是海量資料的處理。可以将表記錄按照主鍵分批進行插入處理,其實在如果分表處理的話,在業務代碼中也是可以進行修改處理的,分而治之。)
3:rename表名稱。 (這裡需要注意的是RENAME過程中的鎖表,可以在業務空閑的淩晨晚上進行處理)。