天天看點

paip.解決 資料庫mysql增加列 字段很慢添加字段很慢環境如下:原因以及解決mysql資料庫添加字段或者修改結構過程如下大的資料哈的解決新的思路(手動執行mysql的過程)

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過程中的鎖表,可以在業務空閑的淩晨晚上進行處理)。