MySQL 9.0 參考手冊  /  分割區  /  分割區管理

26.3 分割區管理

使用 SQL 陳述式修改分割資料表有多種方式;可以使用 ALTER TABLE 陳述式的分割區擴充功能,來新增、捨棄、重新定義、合併或分割現有的分割區。也有方法可以取得關於分割資料表和分割區的資訊。我們將在後續章節中討論這些主題。

注意

分割資料表的所有分割區都必須有相同數量的子分割區;一旦資料表建立後,就無法變更子分割區。

若要變更資料表的分割區配置,只需使用具有 partition_options 選項的 ALTER TABLE 陳述式即可,此選項的語法與用於使用 CREATE TABLE 建立分割資料表的語法相同;此選項(也)總是從關鍵字 PARTITION BY 開始。假設以下 CREATE TABLE 陳述式用於建立依範圍分割的資料表

CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
    PARTITION BY RANGE( YEAR(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990),
        PARTITION p1 VALUES LESS THAN (1995),
        PARTITION p2 VALUES LESS THAN (2000),
        PARTITION p3 VALUES LESS THAN (2005)
    );

若要重新分割此資料表,使其依索引鍵分割成兩個分割區,並使用 id 欄位值作為索引鍵的基礎,您可以使用此陳述式

ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;

這對資料表結構的影響與捨棄資料表並使用 CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2; 重新建立它相同。

ALTER TABLE ... ENGINE [=] ... 只會變更資料表使用的儲存引擎,並保持資料表的分割區配置不變。只有在目標儲存引擎提供分割區支援時,陳述式才會成功。您可以使用 ALTER TABLE ... REMOVE PARTITIONING 來移除資料表的分割區;請參閱 第 15.1.9 節,「ALTER TABLE 陳述式」

重要事項

在給定的 ALTER TABLE 陳述式中,只能使用單個 PARTITION BYADD PARTITIONDROP PARTITIONREORGANIZE PARTITIONCOALESCE PARTITION 子句。例如,如果您想要捨棄分割區並重新整理資料表的剩餘分割區,則必須在兩個不同的 ALTER TABLE 陳述式中執行此操作(一個使用 DROP PARTITION,然後第二個使用 REORGANIZE PARTITION)。

您可以使用 ALTER TABLE ... TRUNCATE PARTITION 從一個或多個選取的分割區中刪除所有列。