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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql onlibe all_MySQL Online DDL

發布時間:2023/11/27 生活经验 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql onlibe all_MySQL Online DDL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雖然FIC可以讓InnoDB存儲引擎免創建臨時表,從而提高索引創建的效率。但正如前面所說,索引創建時會阻塞表上的DML操作。OSC雖然解決了上述的部分問題,但是還是有很大的局限性。MySQL5.6版本可以支持Online DDL(在線數據定義)操作,其允許輔助索引創建的同時,還允許其他諸如INSERT UPDATE DELETE這類的DML操作。這幾大提高了MySQL數據庫在生產環境中的可用性

此外,不僅是輔助索引,以及這幾類的DDL操作都可以通過在線的方式進行操作

輔助索引的創建與刪除

改變自增長值

添加或刪除外鍵約束

列的重命名

通過新的ALTER TABLE語法,用戶可以選擇索引的創建方式:

ALGORITHM指定了創建或刪除索引的算法,COPY表示按照MySQL5.1版本之前的工作模式,即創建臨時表的方式.INPLACE表示索引創建或刪除操作不需要創建臨時表。DEFAULT表示根據參數old_alter_table來判斷是通過INPLACE還是COPY的算法,該參數的默認值為OFF,表示采用INPLACE的方式

LOCK部分為索引創建或刪除時對表添加鎖的情況 可有的選擇為:

a)NONE

執行索引創建或刪除操作時,對目標表不添加任何的鎖,即事務依然可以進行讀寫操作,不會有收到阻塞。因此這種模式可以獲得更大的并發度

b)SHARE

這和之前的FIC類似,執行索引創建或刪除操作時,對目標表加上一個S鎖。對于并發的讀事務,依然可以執行,但是遇到寫事務,就會發生等待操作,如果存儲引擎不支持SHARE模式,會返回一個錯誤信息

c)EXCLUSIVE

在這個模式下,執行索引創建或刪除操作時,對目標表加上一個X鎖。讀寫事務都不能進行。因此會阻塞所有的線程。這和COPY方式運行得到的狀態類似。但不需要像COPY那樣創建一張臨時表

d)DEFAULT

首先會判斷當前的操作是否使用了NONE模式,若不能則判斷是否使用SHARE模式,最后判斷是否使用了EXCLUSIVE模式也就是說DEFAULT會通過判斷事務的最大并發性來判斷執行DDL模式

InnoDB存儲引擎實現Online DDL的原理是在執行創建或刪除操作的同時,將INSERT/UPDATE/DELETE這類的DML操作日志寫入到一個緩存中。待完成索引創建后再重做應用到表上。以此達到數據的一致性。這個緩存大小由innodb_online_alter_log_max_size控制,默認128MB。若用戶更新的表比較大,在創建過程中伴有大量的寫事務,如遇到innodb_online_alter_log_max_size的空間不能存放日志是,會拋出

對于這個操作,可以跳大參數innodb_online_alter_log_max_size,一次獲得更大的日志緩存空間。此外,還可以設置ALTER TABLE的模式為SHARE。這樣在執行過程中就不會有寫事務發生。因此不需要進行DML日志的記錄

需要特別注意,由于Online DDL在創建索引完成后在通過重做日志達到數據庫的最終一致性。這意味著在索引創建過程中,SQL優化器不會選擇正在創建中的索引

總結

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

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