MySQL生產中上億數據大表怎么在線增加一個字段並設定默認值?


MySQL生產中上億數據大表怎么在線增加一個字段並設定默認值?


一、MySQL8.0版本
如果滿足以下條件:
    1、不是壓縮表
    2、不是data dictionary tablespace
    3、不是全文索引表
    4、不是臨時表
    5、新增列在最后位置
滿足以上條件,可以通過instant方式完成快速加列,即修改metadata信息,代價非常小,秒級完成。


二、MySQL5.6、MySQL5.7
    1、可以這么說,雖然支持inplace(不阻塞同時在跑的DML),但還需要rebuild表,代價可能較大並且耗時可能會非常長,也會造成非常嚴重的主從延遲。
    2、因此生產環境還是推薦使用pt-osc/gh-ost等第三方工具進行在線加列。
    3、需要注意的是pt-osc會建觸發器,如果原先表上本身就有觸發器就不能使用了。
    4、另外需要注意的是通過第三方工具加列時需要考慮到空間占用問題(影子表及加列過程中產生的binlog)。
    5、第三方工具加列同樣可能造成主從延遲,因此注意控制速率。

詳細ONLINE DDL見:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM