文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  ALTER TABLESPACE 陳述式

15.1.10 ALTER TABLESPACE 陳述式

ALTER [UNDO] TABLESPACE tablespace_name
  NDB only:
    {ADD | DROP} DATAFILE 'file_name'
    [INITIAL_SIZE [=] size]
    [WAIT]
  InnoDB and NDB:
    [RENAME TO tablespace_name]
  InnoDB only:
    [AUTOEXTEND_SIZE [=] 'value']
    [SET {ACTIVE | INACTIVE}]
    [ENCRYPTION [=] {'Y' | 'N'}]
  InnoDB and NDB:
    [ENGINE [=] engine_name]
  Reserved for future use:
    [ENGINE_ATTRIBUTE [=] 'string']

此陳述式用於 NDBInnoDB 表空間。它可以被用來新增一個新的資料檔案到 NDB 表空間,或從 NDB 表空間移除一個資料檔案。它也可以被用來重新命名 NDB 叢集磁碟資料表空間,重新命名 InnoDB 一般表空間,加密 InnoDB 一般表空間,或將 InnoDB 還原表空間標記為啟用或停用。

UNDO 關鍵字與 SET {ACTIVE | INACTIVE} 子句一起使用,以將 InnoDB 還原表空間標記為啟用或停用。如需更多資訊,請參閱第 17.6.3.4 節「還原表空間」

ADD DATAFILE 變體允許您使用 INITIAL_SIZE 子句為 NDB 磁碟資料表空間指定初始大小,其中 size 的單位為位元組;預設值為 134217728 (128 MB)。您可以選擇性地在 size 後面加上一個字母的縮寫,表示數量級,類似於 my.cnf 中使用的縮寫。通常,這個字母是 M (百萬位元組) 或 G (十億位元組)。

在 32 位元系統上,INITIAL_SIZE 支援的最大值為 4294967296 (4 GB)。(錯誤 #29186)

INITIAL_SIZE 會明確地進行四捨五入,如同 CREATE TABLESPACE 所做的處理。

一旦資料檔案建立後,其大小就無法變更;但是,您可以使用額外的 ALTER TABLESPACE ... ADD DATAFILE 語句向 NDB 表空間新增更多資料檔案。

ALTER TABLESPACE ... ADD DATAFILEENGINE = NDB 一起使用時,會在每個叢集資料節點上建立一個資料檔案,但在 Information Schema 的 FILES 表中只會產生一個資料列。請參閱此表的描述,以及 第 25.6.11.1 節,「NDB 叢集磁碟資料物件」,以取得更多資訊。ADD DATAFILE 不支援 InnoDB 表空間。

使用帶有 ALTER TABLESPACEDROP DATAFILE 會從 NDB 表空間中刪除資料檔案 'file_name'。您無法從任何表格正在使用的表空間中刪除資料檔案;換句話說,資料檔案必須是空的(沒有使用任何區段)。請參閱 第 25.6.11.1 節,「NDB 叢集磁碟資料物件」。此外,任何要刪除的資料檔案都必須先前已使用 CREATE TABLESPACEALTER TABLESPACE 新增到表空間中。DROP DATAFILE 不支援 InnoDB 表空間。

WAIT 會被解析,但其他情況下會被忽略。它用於未來擴充。

ENGINE 子句指定表空間使用的儲存引擎,但此子句已過時,因為表空間儲存引擎已由資料字典知曉,因此 ENGINE 子句已不再需要。在 MySQL 9.0 中,僅在以下兩種情況下支援:

  • ALTER TABLESPACE tablespace_name ADD DATAFILE 'file_name'
        ENGINE={NDB|NDBCLUSTER}
  • ALTER UNDO TABLESPACE tablespace_name SET {ACTIVE|INACTIVE}
        ENGINE=INNODB

您應該預期在未來版本的 MySQL 中,這些語句也會最終移除 ENGINE

RENAME TO 操作會在自動提交模式下隱含執行,無論 autocommit 的值為何。

LOCK TABLESFLUSH TABLES WITH READ LOCK 對於位於該表空間中的表格生效時,無法執行 RENAME TO 操作。

在重新命名表空間時,會對位於一般表空間中的表格取得獨佔的 中繼資料鎖定,這會阻止並行 DDL。支援並行 DML。

重新命名 InnoDB 一般表空間需要 CREATE TABLESPACE 權限。

AUTOEXTEND_SIZE 選項定義當 InnoDB 表空間滿時,其擴展的大小。該設定必須是 4MB 的倍數。預設設定為 0,這會導致表空間根據隱含的預設行為進行擴展。如需更多資訊,請參閱 第 17.6.3.9 節,「表空間 AUTOEXTEND_SIZE 設定」

ENCRYPTION 子句可以為 InnoDB 一般表空間或 mysql 系統表空間啟用或停用頁面級別的資料加密。

必須先安裝和設定金鑰環外掛程式,才能啟用加密。

如果啟用 table_encryption_privilege_check 變數,則需要 TABLE_ENCRYPTION_ADMIN 權限,才能使用與 default_table_encryption 設定不同的 ENCRYPTION 子句設定來變更一般表空間。

如果表空間中的任何表格屬於以 DEFAULT ENCRYPTION='N' 定義的結構描述,則為一般表空間啟用加密會失敗。同樣地,如果一般表空間中的任何表格屬於以 DEFAULT ENCRYPTION='Y' 定義的結構描述,則停用加密會失敗。

如果在一般表空間上執行的 ALTER TABLESPACE 語句不包含 ENCRYPTION 子句,則無論 default_table_encryption 設定為何,表空間都會保留其目前的加密狀態。

當一般表空間或 mysql 系統表空間被加密時,位於該表空間中的所有表格都會被加密。同樣地,在加密表空間中建立的表格也會被加密。

當變更一般表空間或 mysql 系統表空間的 ENCRYPTION 屬性時,會使用 INPLACE 演算法。INPLACE 演算法允許對位於該表空間中的表格進行並行 DML。並行 DDL 會被封鎖。

如需更多資訊,請參閱 第 17.13 節,「InnoDB 靜態資料加密」

ENGINE_ATTRIBUTE 選項用於指定主要儲存引擎的表空間屬性。此選項保留供未來使用。

指派給此選項的值是一個字串文字,其中包含有效的 JSON 文件或一個空字串 ('')。無效的 JSON 會被拒絕。

ALTER TABLESPACE ts1 ENGINE_ATTRIBUTE='{"key":"value"}';

ENGINE_ATTRIBUTE 值可以重複,而不會產生錯誤。在這種情況下,會使用最後指定的值。

伺服器不會檢查 ENGINE_ATTRIBUTE 值,也不會在表格的儲存引擎變更時清除這些值。

不允許變更 JSON 屬性值的個別元素。您只能新增或取代屬性。