日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试

發布時間:2023/12/20 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql online ddl 5.6_MySQL 5.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

二、新引入語法:

在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操作最后鎖定表的時間更長(鎖定表,應用日志到表上)。?每一個變化的索引或者表都會分配一個。

總結

以上是生活随笔為你收集整理的mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。