於是我們開始討論了ddl的時候是否會鎖表,block住dml。
經過一番搜尋,得到了一下結論。
mysql從5.6版本開始執行了online ddl
, 然後在大部分修改column情況下是支援併發的。
核心是支援了alter時候指定演算法,支援inplace
和copy
.
首先判斷版本,使用show variables like "%version%";
檢視使用的資料庫版本,當前是5.7.
其次檢視一下online ddl 支援的column 操作:
從這張表中可以看到,對於column data type的修改是不支援併發dml,所以會影響5分鐘,但是新增乙個column是支援併發dml的。
其次如果執行演算法為inplace
還需要注意table是在哪個版本build的,如果當前版本是5.6以上,但是要操作的表包含日期型別的column並且是在5.6之前的版本build的話,是不支援inplace
演算法的,需要先rebuild。
20200804更新:
在新建index的時候,發現即便是online
和inplace
模式的新建非主鍵索引,仍然會有短暫的加鎖時間。
online ddl具體的過程具體分成三步,在commint
階段肯定會加上排他鎖,其他兩個階段不一定加排他鎖。具體的可以參考mysql online ddl and metadata locks
mysql online ddl文件
mysql alter table文件
mysql zero downtime schema update without algorithm inplace(解決包含日期型別並且表示5.5版本build的問題)
MySQL online ddl 你了解多少?
algorithm mysql online ddl的語法舉例,比如我們想新增乙個主鍵 alter table tbl name add primary key column algorithm inplace,lock none 其中algorithm有三種演算法,分別是copy,inplace,...
Android MediaMuxer使用遇到的問題
1.illegalstateexception問題 mediamuxer的使用必須嚴格遵循如下順序 addtrack start writesampledata stop release 如果有順序衝突或者多次呼叫start stop release,會導致illegalstateexception...
光遇鋼琴mysql 光遇怎麼彈琴 彈琴方法
光遇的琴是15鍵,所以萌新們有很多疑惑,15鍵怎麼彈啊?怎麼全是菱形和圓啊?這又是什麼意思啊?這裡給剛來的光之後裔們解一下迷。以上圖中的1234567,熟知簡譜的大大們肯定都明白,是哆啦咪發嗦,由於光遇是15鍵,所以光遇的音階其實也只有2個音階附帶乙個更高音階的哆。那肯定也有小夥伴們問,那只有兩個音...