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