欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql Online DDL的使用詳解

 更新時間:2021年05月20日 11:32:44   作者:xmebcc  
在日常DBA運維過程中,對表結構進行變更算是個普遍的需求了。如果操作的對象是個熱表、大表,難免心里一怵,這些DDL操作是否可以直接執(zhí)行,哪些會影響線上讀寫,哪些會影響主從,甚至導致服務器壓力驟升,本文做了梳理,希望對大家有所幫助。

正文

Online DDL在MySQL 5.6才開始支持的,在5.5及之前版本,使用alter table/create index等命令進行表結構修改操作均會鎖表,這在生產(chǎn)環(huán)境上明顯是不可接受的。

在MySQL 5.7,Online DDL在性能和穩(wěn)定性上不斷得到優(yōu)化,性能有顯著優(yōu)勢,且對業(yè)務負載影響小,停寫時間可控,相對pt-osc/gh-ost來說,無需安裝第三方依賴包,同時支持Inplace算法的Online DDL,由于無需拷表,所需磁盤空間也更小。

先來看一個常見的DDL語句:

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;

其中,LOCK描述了DDL期間運行的并發(fā)程度,ALGORITHM描述了DDL的實現(xiàn)方式

LOCK參數(shù)

  1. LOCK=NONE:允許并發(fā)的查詢和DML操作
  2. LOCK=SHARED:允許并發(fā)的查詢,但阻塞DML操作
  3. LOCK=DEFAULT: 由系統(tǒng)決定,允許盡可能多的并發(fā)性(并發(fā)查詢、DML或兩者)。如果省略LOCK子句相當于指定LOCK=DEFAULT
  4. LOCK=EXCLUSIVE:阻塞并發(fā)查詢和DML操作。

ALGORITHM參數(shù)

  1. ALGORITHM=COPY:采用拷表方式進行表變更,與pt-osc/gh-ost類似;
  2. ALGORITHM=INPLACE:僅需要進行引擎層數(shù)據(jù)改動,不涉及Server層;

COPY TABLE流程

  1. 首先建立臨時表,表結構為ALTAR TABLE更改后的結構
  2. 將原表中數(shù)據(jù)導入到臨時表(server層創(chuàng)建臨時表,會有顯示的IBD文件)
  3. 刪除原表
  4. 將臨時表rename為原來的表名

同時這一過程中,為了保持數(shù)據(jù)的一致性,中間復制數(shù)據(jù)時(Copy Table)全程鎖表只讀,如果有寫請求進來將無法提供服務,將導致連接數(shù)爆張。

IN-PLACE流程

  1. 建立一個臨時文件,掃描原表主鍵的所有數(shù)據(jù)頁
  2. 用數(shù)據(jù)頁中原表記錄生成B+樹,存儲到臨時文件中(innodb_temp_data_file_path臨時表空間下創(chuàng)建臨時文件)
  3. 生成臨時文件的過程中,將所有對原表的操作記在一個日志文件(rowlog)中
  4. 臨時文件生成后,將日志文件中的操作應用到臨時文件,得到一個輯數(shù)據(jù)上與原表相同
  5. 數(shù)據(jù)文件(日志文件記錄和重放操作)
  6. 用臨時文件替換原表數(shù)據(jù)文件

這一過程中,alter 語句在啟動的時候獲取MDL寫鎖,但是這個寫鎖在真正拷貝數(shù)據(jù)之前就退化成讀鎖,也就是說在最耗時的copy數(shù)據(jù)到臨時文件的過程中,原表是可以進行dml操作的,僅僅會在最后的新舊表切換階段加鎖,這個rename的時間就非??炝?。

允許并發(fā)DML的DDL操作

  • 創(chuàng)建/新增二級索引
  • 重命名二級索引
  • 刪除二級索引
  • 改變索引類型(USING {BTREE | HASH})
  • 添加主鍵(expensive cost)
  • 刪除主鍵并增加另一個(expensive cost)(ALTER TABLE tbl_name DROP PRIMARY KEY, ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;)
  • 新增列 (expensive cost)
  • 刪除列 (expensive cost)
  • 重命名列
  • 列重新排序 (expensive cost)
  • 改變列默認值
  • 刪除列默認值
  • 改變列自增值
  • 設置列屬性null/not null (expensive cost)
  • 修改枚舉或集合列的定義
  • Change ROW_FORMAT
  • Change key block size

標記為expensive cost的操作雖然允許OnlineDDL,但本身對服務器IO,CPU都會造成較高負擔,同時會導致復制阻塞,造成另一種形式的從庫復制延遲,所以如果是大表,建議業(yè)務低峰期執(zhí)行

不允許并發(fā)DML的DDL操作

  • 添加全文索引
  • 添加空間索引
  • 刪除主鍵
  • 改變列數(shù)據(jù)類型
  • 添加自增列(新增列->變?yōu)樽栽隽校?/li>
  • 變更表字符集
  • 修改數(shù)據(jù)類型長度
    • 特例:varchar字符長度從10變更到小于255 采用inplace方式不會鎖表;從255變更到10會鎖表;

以上就是Mysql Online DDL的使用詳解的詳細內容,更多關于Mysql Online DDL的使用的資料請關注腳本之家其它相關文章!

相關文章

  • 如何優(yōu)雅安全的備份MySQL數(shù)據(jù)

    如何優(yōu)雅安全的備份MySQL數(shù)據(jù)

    這篇文章主要介紹了如何優(yōu)雅安全的備份MySQL數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2022-10-10
  • MySQL如何優(yōu)化索引

    MySQL如何優(yōu)化索引

    這篇文章主要介紹了MySQL如何優(yōu)化索引,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • Mysql允許外網(wǎng)訪問設置步驟

    Mysql允許外網(wǎng)訪問設置步驟

    本文給大家分享Mysql允許外網(wǎng)訪問設置步驟,通過簡單的五步操作就可以實現(xiàn)mysql允許外圍訪問功能,非常不錯,需要的朋友參考下吧
    2016-10-10
  • Mysql存儲二進制對象數(shù)據(jù)問題

    Mysql存儲二進制對象數(shù)據(jù)問題

    這篇文章主要介紹了Mysql存儲二進制對象數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MySQL慢查詢日志的作用和開啟

    MySQL慢查詢日志的作用和開啟

    這篇文章主要給大家介紹了關于MySQL慢查詢日志的作用和開啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明

    windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明

    這篇文章主要介紹了windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明,需要的朋友可以參考下
    2013-06-06
  • MySQL的數(shù)據(jù)類型和建庫策略分析詳解

    MySQL的數(shù)據(jù)類型和建庫策略分析詳解

    無論是在小得可憐的免費數(shù)據(jù)庫空間或是大型電子商務網(wǎng)站,合理的設計表結構、充分利用空間是十分必要的。這就要求我們對數(shù)據(jù)庫系統(tǒng)的常用數(shù)據(jù)類型有充分的認識。下面我就將我的一點心得寫出來跟大家分享。
    2008-04-04
  • Mysql報錯too many connections的原因及解決方案

    Mysql報錯too many connections的原因及解決方案

    這篇文章主要給大家介紹了關于Mysql報錯too many connections原因及解決方案,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 詳解MySQL中varchar和int隱式轉換的注意事項

    詳解MySQL中varchar和int隱式轉換的注意事項

    這篇文章主要為大家詳細介紹了MySQL中varchar和int隱式轉換的注意事項,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • Mysql查詢正在執(zhí)行的事務以及等待鎖的操作方式

    Mysql查詢正在執(zhí)行的事務以及等待鎖的操作方式

    今天小編就為大家分享一篇關于Mysql查詢正在執(zhí)行的事務以及等待鎖的操作方式,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論