成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

MySQL online ddl擴展字段長度

IT那活兒 / 3793人閱讀
MySQL online ddl擴展字段長度

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


問 題

從MySQL5.5開始支持online ddl,5.6版本更加完善,一直到MySQL8.0版本,支持了更多alter table語句通過online ddl快速的執(zhí)行,在執(zhí)行效率、降低鎖表時間以及IO消耗上有了很大的提升。

在日常運維MySQL時,ddl執(zhí)行的最多的大概就是擴展varchar字段長度的情況,但是面對一定數(shù)據(jù)量的表,在執(zhí)行時間上有時很快,有時執(zhí)行起來很慢,這是什么原因?


測 試

2.1 創(chuàng)建表t1
表字符集為utf8mb4。
插入一些測試數(shù)據(jù):
2.2 執(zhí)行ddl命令
首先,name字段長度由30擴展至50。
再把name字段長度由50擴展至90。
可以看到兩次ddl的執(zhí)行時間差異很大, 造成差異的原因是什么呢?

通過MySQL官方文檔得知,這跟varchar的字段所占用的字節(jié)數(shù)有關(guān)。

  • 當(dāng)占用字節(jié)數(shù)為0-255字節(jié)時(注意是字節(jié),不是字符),需要用一個字節(jié)記錄字段的長度;
  • 當(dāng)占用256及以上的字節(jié)時,需要用兩個字節(jié)記錄字段的長度;
  • 添加字段長度時,如果添加前后長度都在0-255范圍內(nèi),或者大于等于256范圍內(nèi),可以通過inplace的算法進行online ddl,如果是從0-255范圍跨到大于等于256 ,就不支持online ddl,只能通過copy的算法進行ddl,所以執(zhí)行較慢。MySQL會自動根據(jù)是否支持online ddl自動處理,所以才會出現(xiàn)擴展varchar字段長度執(zhí)行有時很快,有時很慢的情況。
通過上面的例子分析,varchar(30) 占用了30個字符,字符集為utf8mb4每個字符4個字節(jié),共占用120個字節(jié),varchar(50) 占用了200個字節(jié),而varchar(90)占用了360個字節(jié),varchar(30)到varchar(50)不涉及跨字節(jié)范圍,而從varchar(50)到varchar(90)則涉及到跨字節(jié)范圍,所以后者不能通過online ddl執(zhí)行語句,只能通過原始的方式去copy表執(zhí)行,速度較慢。
2.3 驗證結(jié)論
通過顯示指定inplace的方式,更加明顯的看出,當(dāng)涉及到跨字節(jié)范圍時,MySQL會報錯提示使用copy的方式執(zhí)行alter table語句。通過使用copy的方式跨話字節(jié)范圍后,再次指定inplace 的方式,又可以進行online ddl了。
測試結(jié)論:
  • 在創(chuàng)建表時,如果字段的字節(jié)長度不會超過256字節(jié),那么建議varchar的字節(jié)長度創(chuàng)建時小于256字節(jié);
  • 如果字符串的長度超過200字節(jié),那么varchar的字節(jié)長度建議超過256字節(jié)。
依據(jù)本例,varchar(30)為占用120字節(jié),如果確定不會超過256字節(jié),可以根據(jù)實際需求創(chuàng)建小于等于varchar(63);如果預(yù)估數(shù)據(jù)可能會超過256字節(jié),就不要創(chuàng)建低于varchar(64)的,這樣方便以后字段擴展進行使用online ddl。
當(dāng)然,不建議為了方便online ddl操作,將所有的字段長度都超過256字節(jié),因為MySQL在加載內(nèi)存臨時表的時候,會將字段定義的所有的長度加載到內(nèi)存中,而不是實際的長度,同樣又會造成資源消耗。



本文作者:吳 昊(上海新炬中北團隊)

本文來源:“IT那活兒”公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/129105.html

相關(guān)文章

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<