精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL大表如何DDL,你學會了嗎?

數據庫 其他數據庫
mysql的ddl 經過了幾個版本的演進,Online DDL這個特性是在MySQL5.6.7開始支持,在此之前mysql執行ddl語句時,會生成新表,然后將原表數據復制到新表,整個過程是會阻塞DML語句的。

大家好,我是藍胖子,mysql對大表(千萬級數據)的ddl語句,在生產上執行時一定要千萬小心,一不小心就有可能造成業務阻塞,數據庫io和cpu飆高的情況。今天我們就來看看如何針對大表執行ddl語句。

通過這篇文章,你能了解到下面的知識點。

傳統ddl 和online ddl的區別

mysql的ddl 經過了幾個版本的演進,Online DDL這個特性是在MySQL5.6.7開始支持,在此之前mysql執行ddl語句時,會生成新表,然后將原表數據復制到新表,整個過程是會阻塞DML語句的。

online ddl 定義其實就是在執行ddl語句時,不會阻塞dml語句,那么我們就稱這樣的ddl為online ddl

ddl 的算法參數選項又分為 copy, Inplace, INSTANT ,其中copy就是之前傳統ddl執行的過程,會阻塞dml語句。Inplace, INSTANT 算法執行期間 都是可以執行DML語句的,所以我們稱使用這兩種算法的ddl語句為online ddl。

!! ???? 但需要注意的是,并不是所有的ddl操作都支持這兩種算法,具體什么ddl操作類型支持什么算法需要去查閱官方文檔。

INSTANT 算法是mysql8.0 以后新加的,它能在秒級別對千萬級別的大表進行加字段操作,至于其他ddl 語句類型是不是也支持INSTANT 算法,需要去看下官網了,由于我們線上還是使用的mysql5.7 ,所以我還是會給予mysql5.7去進行分析。

在mysql5.7中,例如我們執行下面的ddl 加字段的語句,

ALTER TABLE tbl_name ADD COLUMN column_name column_definition

mysql會去判斷當前執行的ddl語句類型能不能用online ddl inplace 方式,如果能用,那么它就會采用。

使用Inplace算法的ddl語句,執行過程分為3個階段,

階段1: Initialization初始化

在初始化階段,服務器將考慮存儲引擎功能、語句中指定的操作以及用戶指定的ALGORITHM和LOCK選項,確定操作期間允許多少并發性。在此階段,使用一個可升級MDL讀鎖來保護當前表定義。

階段2:Execution執行

如果評估階段發現ddl語句不能使用inplace算法,則會將mdl讀鎖升級為排它鎖,阻塞DML語句執行。并且,這個階段,會真正的執行ddl語句。

階段3:Commit Table Definition 提交表定義

在提交表定義階段,MDL讀鎖升級為MDL排他鎖,以排除舊表定義并提交新表定義。一旦授予,獨占MDL鎖的持續時間就會很短。

可以看到如果使用inplcae 算法,只有在任務提交階段(時間很短), ddl才會阻塞dml語句,因為任務提交階段會持有MDL 排他鎖,而DML 語句執行時需要獲取MDL讀鎖,所以在此期間,DML語句會被阻塞。

具體哪些ddl操作類型支持Inplace 算法,可以查看官方文檔鏈接,比如下面的mysql5.7的文檔

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html

如下圖所示,可以發現mysql5.7對加字段的ddl 支持inplace 算法,不過執行期間需要rebuild table即建立新表,并且運行并發的dml語句執行。但是改變字段數據類型ddl,則只能按copy算法進行執行。

!! inplace 算法不是不會產生數據的復制,只是復制期間,不會阻塞dml語句的執行。

圖片圖片

mysql ddl 的陷阱

online ddl機制是否一定不會阻塞業務?

接著我們來看下ddl時使用inplcae 算法(online ddl)是不是一定不會阻塞業務,其實答案是顯而易見的,業務也有可能阻塞,因為online ddl 在提交表定義階段是會獲取MDL排他鎖的,如果有其他事務獲取了MDL讀鎖,那么online ddl 語句也會阻塞住,從而導致發生在ddl語句執行時間點后面的那些需要獲取MDL鎖的sql阻塞掉。具體的操作例子可以查看mysql官方給出的一個例子,

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-performance.html

ddl 過程中從庫的延遲性

ddl的第二個陷阱是要注意從庫的延遲性,比如mysql5.7加新列,雖然默認可以使用inplace算法來讓dml語句不阻塞,但是建立新列還是需要表的rebuild操作,如果是大表,整個過程還是很慢的,如果從庫只開啟了一個線程去執行主從復制,就會導致主從庫間出現極大的延遲。

解決辦法是開啟并行復制,可以用下面的語句在從庫上執行,查看從庫是否開啟了并行復制

SHOW VARIABLES LIKE 'slave_parallel_workers';

online ddl Duplicate entry...錯誤

雖然使用inplace算法的ddl (online ddl) 可以不阻塞業務操作,但是在大表上執行時,由于ddl過程比較長,還是有可能會出現Duplicate entry 錯誤。下面我來介紹下它出現的場景,比如一張幾千萬的表,里面有一個唯一鍵,在add column ddl期間,對表進行插入,并且插入的值剛好就觸發了唯一鍵約束。那么最后ddl再快完成的時候就會出現這個錯誤。

這是由于add column ddl期間,會發生表的rebuild,相當于新建一個臨時表然后對舊表進行拷貝,但是ddl期間還是允許業務修改,插入數據,所以online ddl將執行期間新的修改記錄到一個叫做row_log的對象里,在ddl最后階段,將mdl鎖升級為排它鎖,然后將row_log對象中的數據和新表的數據進行合并,這樣就達到了ddl期間兼容dml操作的目的。

但是應用row log的過程是不允許報錯,如果期間發生了報錯就會導致ddl回滾,因為在ddl期間,記錄了相同唯一鍵的數據,所以在應用row log的時候,產生了報錯。

官方也給出了online ddl 報錯的場景,鏈接如下

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-failure-conditions.html

其實我認為本質原因是mysql5.7 執行add column 的ddl時間還是太長了,在這么長時間里可能就會發生業務對相同唯一鍵的插入操作,如果能縮短ddl執行時間應該就能很大程度避免這種問題。

mysql8.0  在add column 時可以采用instance 算法,能達到秒級別的加新字段的操作,理論上可以避免這個錯誤。

如果不是mysql8.0 ,又想對千萬級的大表添加字段,又要避免Duplicate entry 錯誤,那么可以使用pt-online-schema-change這個工具。

pt-online-schema-change 工具進行字段添加

下面我就來簡單的介紹下pt-online-schema-change,它對表結構的修改原理是創建一張新表(擁有最新的表定義),然后在舊表上創建delete,update,insert的觸發器,來對增量數據進行更新,對舊表數據采取insert ignore 新表 select 老表 LOCK S 的方式進行分塊拷貝,最后拷貝完成后,在一個事務里對舊表進行刪除,新表進行重命名,這樣就完成了對表結構的變更。

同時在變更期間,你能夠通過下面的參數控制從庫延遲

  • --max-lag

默認1s

檢查從庫延遲的時間,如果超過,則停止copy data,休息--check-interval秒后,再重新開始copy數據

查看通過延遲時間,是通過從庫show slave status,查看Seconds_Behind_Master

如果指定--check-slave-lag,該工具只檢查該服務器的延遲,而不是所有服務器。

  • --check-interval
  • 從庫延遲超過指定的--max-lag,中斷copy data休息的時間
  • 默認為1s

下面是pt-online-schema-change 語句執行的完整示例,它同時會列出拷貝過程完成的百分比。

pt-online-schema-change --alter "add pkg_source tinyint(2) default 0 not null;" h=主機ip,P=端口,p=密碼,u=用戶名,D=數據庫名,t=表名  --recursion-method=none  --execute --statistics

如果你的ddl需要拷貝表,那么用pt-online-schema-change 工具再合適不過了。

責任編輯:武曉燕 來源: 藍胖子的編程夢
相關推薦

2023-03-26 22:31:29

2022-12-06 07:53:33

MySQL索引B+樹

2023-05-05 06:54:07

MySQL數據查詢

2022-12-09 09:21:10

分庫分表算法

2023-11-01 07:28:31

MySQL日志維護

2022-11-30 09:54:57

網絡令牌身份驗證

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-02-15 08:41:56

多層維表性能寬表

2022-11-03 08:16:33

MySQL·窗口函數

2023-05-24 08:14:55

2024-08-21 08:27:30

擴展數據庫服務器

2024-08-09 08:17:07

SSH服務器架構

2023-04-26 00:41:36

A/B測試郵件數量

2024-05-29 09:20:41

2021-11-26 11:30:07

身高重建隊列
點贊
收藏

51CTO技術棧公眾號

国产精品69久久久| 国产精品久久久久免费a∨ | √天堂8资源中文在线| 99riav一区二区三区| 国产精品96久久久久久又黄又硬| 欧美激情精品久久久久久免费| 亚洲精品观看| 在线观看日韩一区| 青草视频在线观看视频| avav免费在线观看| 国产精品一区二区免费视频| 天堂精品久久久久| 色狠狠av一区二区三区| 色一情一乱一乱一区91| 免费在线高清av| 国产精品一二二区| 国产精品久久久精品| 国产精品成人免费一区二区视频| 欧美顶级大胆免费视频| 日韩大陆欧美高清视频区| 欧洲美女亚洲激情| 欧美理论影院| 亚洲成人免费av| 精品日韩在线播放| 成黄免费在线| 26uuu精品一区二区| 成人18视频| 国产三级三级在线观看| 久久精品女人天堂av免费观看| 久久久久观看| 91国模大尺度私拍在线视频 | 国产日韩欧美高清免费| 欧美成人精品在线播放| 开心激情五月网| 精品视频免费| 亚洲美女自拍视频| 国产精品久久久久久亚洲色 | av2020不卡| 亚洲人成人一区二区在线观看 | 国产精品无码一区二区三区免费| 我要色综合中文字幕| 欧美人狂配大交3d怪物一区| xxxx一级片| 久久野战av| 色狠狠色狠狠综合| 99国产精品免费视频| 国产美女精品写真福利视频| 亚洲欧美激情视频在线观看一区二区三区 | 成人日韩在线| 色就色 综合激情| 毛片一区二区三区四区| 一区二区电影免费观看| 婷婷成人激情在线网| 一二三四视频社区在线| 136福利第一导航国产在线| 亚洲一区在线电影| 99久久国产综合精品五月天喷水| 24小时免费看片在线观看| 亚洲动漫第一页| 成人午夜免费在线| 国产福利在线免费观看| 亚洲免费二区| 久久亚洲一区二区三区四区| 国产一区自拍视频| 十八禁一区二区三区| 91免费看片在线观看| 欧美精品欧美精品系列c| 黄色av网站在线看| 中文字幕日本不卡| 水蜜桃在线免费观看| 亚洲精品白浆| 午夜精品久久久久久久久久久| 欧美精品久久久久久久免费| 在线观看涩涩| 欧美日韩一级黄| 色哟哟在线观看视频| 成人涩涩网站| 日韩av一区在线观看| 一区二区三区久久久久| 91青青国产在线观看精品| 九九热在线精品视频| 久久视频免费在线观看| 老司机免费视频久久| 91久久夜色精品国产网站| 性生活视频软件| 97久久超碰国产精品电影| 久久久一本精品99久久精品| 国产午夜在线视频| 一区二区三区视频在线看| 六月丁香婷婷激情| 日本午夜免费一区二区| 久久久久高清精品| 欧美区一区二区三区| 波多野结衣家庭教师视频| 欧美成人黄色| 亚洲福利在线视频| 国产精品久久久久久成人| 亚洲视频碰碰| 国产美女久久精品| 日韩一区二区三区在线观看视频| 国产欧美日韩久久| 无码 制服 丝袜 国产 另类| 成人国产精选| 亚洲国产三级网| 制服丨自拍丨欧美丨动漫丨| 9色精品在线| 亚洲free性xxxx护士hd| 男人天堂资源在线| 亚洲综合在线第一页| 天天爽人人爽夜夜爽| 成人香蕉社区| 久久电影一区二区| 免费cad大片在线观看| 91porny九色| 成人免费视频视频| 麻豆中文字幕在线观看| 日韩在线影院| 亚洲激情中文字幕| 精品97人妻无码中文永久在线| 日韩中文字幕不卡| 九九九久久久| 免费av不卡在线观看| 欧美日韩视频一区二区| 在线观看日本中文字幕| 国产日韩1区| 成人在线视频电影| 久操视频在线观看| 欧美丝袜丝交足nylons| 谁有免费的黄色网址| 亚洲视频播放| 久久www免费人成精品| 俺来也官网欧美久久精品| 日韩欧美一级精品久久| 97在线观看视频免费| 免费在线观看视频一区| 欧美视频1区| 欧美激情护士| 视频二区欧美毛片免费观看| 日韩精品视频在线| 香蕉免费毛片视频| 成人va在线观看| 东北少妇不带套对白| swag国产精品一区二区| 欧美理论片在线观看| 99热这里精品| 亚洲精品大片www| 四虎1515hh.com| 欧美精品18| 国产精品麻豆免费版| 第四色日韩影片| 亚洲国产精品久久久久| 日韩精品在线不卡| 成人av电影在线| 穿情趣内衣被c到高潮视频| 国产电影一区| 欧美日本国产在线| 内射后入在线观看一区| 精品福利在线视频| 国产精品探花一区二区在线观看| 久久久资源网| 2023国产精品久久久精品双| 国产免费一区二区三区在线能观看| 成年人在线观看| 欧美日韩精品一区二区三区蜜桃 | 国产精品一区二区无码对白| 99热精品在线观看| 欧美日韩在线高清| 国产黄色精品| 欧美俄罗斯乱妇| 天天射天天色天天干| 欧美性极品少妇精品网站| 美国黑人一级大黄| 国产一区二区调教| a级黄色小视频| 久久综合色占| 成人在线视频网站| 91福利在线免费| 亚洲欧美日韩另类| 国产白丝袜美女久久久久| 国产精品视频一区二区三区,| 久久精品免视看| 999久久久精品视频| 激情成人综合| 日韩久久不卡| 日韩一区二区三区色| 欧美孕妇性xx| 含羞草www国产在线视频| 精品国产免费一区二区三区四区| 日本一区二区免费电影| 中文字幕一区二区视频| 中文字幕在线永久| 强制捆绑调教一区二区| 久久精品xxx| 欧美理论在线播放| 国产精品乱码视频| 成人国产网站| 97久久精品视频| 在线观看黄色av| 亚洲国产精品高清久久久| 在线免费观看视频网站| 亚洲电影一区二区| 国产在线免费av| 无码h黄肉3d动漫在线观看| 婷婷综合另类小说色区| 国产午夜精品理论片在线| 99re这里只有精品视频首页| 天天综合成人网| 日韩精品三区四区| 青青青青草视频| 综合久久久久| 色综合电影网| 青青操综合网| αv一区二区三区| 婷婷激情成人| 欧美在线视频播放| 波多野结依一区| 久久久精品中文字幕| 国产在线观看免费网站| 日韩av在线不卡| 精品人妻少妇嫩草av无码专区| 日本一区二区三区dvd视频在线| 涩视频在线观看| 国产成人精品免费网站| 一二三av在线| 韩日欧美一区二区三区| 污片在线免费看| 伊人久久av| 欧美日韩亚洲精品一区二区三区 | 久久国产精品高清一区二区三区| 精品国产自在久精品国产| 国产色在线视频| 欧美欧美欧美欧美首页| 国产女优在线播放| 91久久精品午夜一区二区| 国产女同在线观看| 亚洲国产wwwccc36天堂| 久久久久97国产| 有码一区二区三区| 欧美日韩精品在线观看视频| 亚洲另类中文字| 日韩黄色免费观看| 亚洲人亚洲人成电影网站色| 国产又粗又长又黄的视频| 欧美极品另类videosde| 极品人妻videosss人妻| 国产欧美日韩中文久久| 成人在线观看免费高清| 国产欧美视频一区二区| 性色国产成人久久久精品| 国产精品麻豆99久久久久久| 亚洲在线观看视频| 国产suv精品一区二区69| 欧美嫩在线观看| 国产精品无码在线播放| 91精品国产美女浴室洗澡无遮挡| 国产99视频在线| 日韩精品综合一本久道在线视频| 成人福利小视频| 亚洲成人黄色网| 三级在线视频| 一区二区三区视频观看| 五月天婷婷在线视频| 久久成人av网站| 大桥未久在线播放| 欧美重口另类videos人妖| 亚洲成av在线| 成人高清视频观看www| 综合激情网...| 久久66热这里只有精品| 欧洲三级视频| 看一级黄色录像| 99热免费精品| 91小视频网站| 高清不卡在线观看| 中国黄色a级片| 国产精品乱人伦中文| 婷婷色中文字幕| 日韩亚洲精品在线观看| 亚洲免费成人av电影| 国产精品久久久久一区二区国产 | 国产91视觉| 精品在线观看入口| 中文字幕一区二区三区5566| 狠狠色丁香久久综合频道| 久久久久人妻精品一区三寸| 精品一区在线看| 欧美双性人妖o0| 亚洲国产精品成人综合| 妺妺窝人体色www在线下载| 色偷偷一区二区三区| 国产精品系列视频| 日韩黄色高清视频| 老司机福利在线视频| 97久久精品在线| av成人在线网站| 国产厕所精品在线观看| 成人三级视频| 丝袜人妻一区二区三区| 免费人成黄页网站在线一区二区 | 国产精品午夜福利| 亚洲人成亚洲人成在线观看| 久久久一本二本三本| 91成人精品| 国产福利视频在线播放| 国产福利一区在线| 国产7777777| 欧美日韩激情视频8区| 99国产揄拍国产精品| 国产一区二区黄| 超碰激情在线| 97久草视频| 欧美大黑bbbbbbbbb在线| 蜜臀av午夜一区二区三区| 国产99精品在线观看| 国产精品1区2区3区4区| 欧美日韩亚洲一区二区三区| www国产在线| 久久这里只有精品99| 朝桐光一区二区| 免费在线一区二区| 亚洲经典自拍| 精人妻一区二区三区| 一区二区三区在线影院| 国产一区二区麻豆| 国产一区二区日韩| 欧美亚洲韩国| 久久综合给合久久狠狠色| 海角社区69精品视频| 午夜免费一级片| 国产精品久久久久久妇女6080 | 午夜免费久久看| jizz中国女人| 久久久国产精品免费| 91综合国产| 亚洲成人自拍视频| 日韩国产欧美在线播放| av男人的天堂av| 日本韩国一区二区三区视频| 免费一级毛片在线观看| 日本国产一区二区三区| 四虎5151久久欧美毛片| 久久成人免费观看| 99re免费视频精品全部| 欧美日韩精品区| 亚洲精品视频免费在线观看| 欧美私密网站| 欧美激情论坛| 肉色丝袜一区二区| 黄色三级生活片| 欧美三级日韩在线| 日本视频不卡| 久久久久久久国产精品| 欧美日韩一区二区三区四区不卡| 欧美二区在线视频| 久久美女艺术照精彩视频福利播放 | 91精品人妻一区二区三区蜜桃2| 亚洲欧美日韩电影| 国产伦精品一区二区三区四区免费| 91精品观看| 久久国产劲爆∧v内射| 亚洲成精国产精品女| 日韩三级电影网| 国产精品久久久久久久久久东京| 色婷婷色综合| 人妻少妇偷人精品久久久任期| 亚洲一区二区三区四区不卡| 手机看片一区二区三区| 日本精品视频在线| 日韩精品永久网址| 天天影视色综合| 亚洲一区二区在线视频| 亚洲人午夜射精精品日韩| 国产精品久久久久久久久久新婚| 97久久夜色精品国产| 色婷婷狠狠18禁久久| 欧美午夜激情视频| 91精彩视频在线观看| 国产精品二区在线| 欧美专区在线| 中文国语毛片高清视频| 精品国精品国产| se69色成人网wwwsex| 经典三级在线视频| 91污片在线观看| 91丨九色丨蝌蚪丨对白| 久久久久久久一区二区| 精品免费一区二区| 韩国一区二区三区四区| 在线看国产日韩| 欧美6一10sex性hd| 6080日韩午夜伦伦午夜伦| 国产va在线播放| 精品亚洲永久免费精品| 欧美男女视频| 成人免费毛片网| 亚洲人精品一区| 国产三级在线免费| 国产伦精品一区二区三区视频孕妇| 美国一区二区三区在线播放 | 国产极品美女在线|