type
status
date
slug
summary
tags
category
icon
password

功能新增或變動

  1. 在 8.0.29 之前 MySQL 允許時間相關的值使用 - 以外的分隔符,但從 8.0.29 開始會棄用並將在未來的版本移除。
    1. replica_parallel_type 棄用,MTS 只會有 LOGICAL_CLOCK 的並行模式,不提供 DATABASE 模式。
    1. CREATE FUNCTIONCREATE PROCEDURE AND CREATE TRIGGER 語句開始支援 IF NOT EXISTS
    1. ALTER TABLE … DROP COLUMN 開始支援 ALGORITHM=INSTANT
    1. ALTER TABLE .. ADD COLUMN 在 MySQL 8.0.29 之前如果要使用 ALGORITHM=INSTANT 必須只能加在最後一列,從 MySQL 8.0.29 開始加在任意位置也可以使用 ALGORITHM=INSTANT
    1. 當使用 ALTER TABLE ... ALGORITHM=INSTANT 來對 table 新增或刪除 row 時會創建一個新的 row version ,從 MySQL 8.0.29 開始可以從INFORMATION_SCHEMA.INNODB_TABLES.TOTAL_ROW_VERSIONS來追蹤 row version 的數量,每次 INSTANT 添加或刪除 row 時都會增加,初始值為 0。
      1. 因為每個 row version 都需要額外空間紀錄表的 metadata,因此該值的最大允許值目前為 64,當達到此最大值時將無法使用 ALGORITHM=INSTANT 來新增或刪除 COLUMN,並建議使用 COPY 或 INPLACE 算法。
        此值可以透過執行需要重建表的 ALTER TABLEOPTIMIZE TABLE 語句來重建表,達到將該數值重置為 0 的效果。
    1. 新增 binlog_expire_logs_auto_purge 系統變量來控制是否要自動清除 binlog。清除時間由 binlog_expire_logs_seconds 來控制,當該變量為 0 時,即使 binlog_expire_logs_auto_purge = ON 也不會清除 binlog。

    優化器變動

    materialized(物化) 的 derived table(派生表) 在 union 的情況下可以進行下推優化

    BUG 修復

    1. 當 select count(*) 語句使用了 multi-valued (多值索引時),會導致結果發生異常:
     
    參考: