MySQL 9.0 發行說明
對於在分割區設定中進行變更,依雜湊或金鑰分割的表格非常相似,且兩者在許多方面都與依範圍或清單分割的表格不同。因此,本節僅說明依雜湊或金鑰分割的表格之修改。如需討論加入和捨棄依範圍或清單分割的表格之分割區,請參閱第 26.3.1 節「範圍和清單分割區的管理」。
您無法以與從依 RANGE
或 LIST
分割的表格相同的方式,從依 HASH
或 KEY
分割的表格中捨棄分割區。但是,您可以使用 ALTER TABLE ... COALESCE PARTITION
合併 HASH
或 KEY
分割區。假設一個包含客戶資料的 clients
表格分為 12 個分割區,建立方式如下所示
CREATE TABLE clients (
id INT,
fname VARCHAR(30),
lname VARCHAR(30),
signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;
若要將分割區數量從 12 個減少到 8 個,請執行下列 ALTER TABLE
陳述式
mysql> ALTER TABLE clients COALESCE PARTITION 4;
Query OK, 0 rows affected (0.02 sec)
COALESCE
對依 HASH
、KEY
、LINEAR HASH
或 LINEAR KEY
分割的表格都同樣適用。以下範例與先前的範例相似,唯一不同的是表格是依 LINEAR KEY
分割
mysql> CREATE TABLE clients_lk (
-> id INT,
-> fname VARCHAR(30),
-> lname VARCHAR(30),
-> signed DATE
-> )
-> PARTITION BY LINEAR KEY(signed)
-> PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec)
mysql> ALTER TABLE clients_lk COALESCE PARTITION 4;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
COALESCE PARTITION
後面的數字是要合併到餘數中的分割區數量,換句話說,就是要從表格中移除的分割區數量。
嘗試移除的分割區多於表格中的分割區會導致類似以下的錯誤
mysql> ALTER TABLE clients COALESCE PARTITION 18;
ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE instead
若要將 clients
表格的分割區數量從 12 個增加到 18 個,請使用 ALTER TABLE ... ADD PARTITION
,如下所示
ALTER TABLE clients ADD PARTITION PARTITIONS 6;