文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國 Letter) - 39.9Mb
PDF (A4) - 40.0Mb
Man 頁面 (TGZ) - 258.5Kb
Man 頁面 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  表空間 AUTOEXTEND_SIZE 設定

17.6.3.9 表空間 AUTOEXTEND_SIZE 設定

預設情況下,當每個表格的表空間或通用表空間需要額外空間時,表空間會依照以下規則逐步擴展

  • 如果表空間的大小小於一個 extent,則會一次擴展一個頁面。

  • 如果表空間的大小大於 1 個 extent 但小於 32 個 extent,則會一次擴展一個 extent。

  • 如果表空間的大小大於 32 個 extent,則會一次擴展 4 個 extent。

有關 extent 大小的資訊,請參閱第 17.11.2 節「檔案空間管理」

每個表格的表空間或通用表空間的擴展量可透過指定 AUTOEXTEND_SIZE 選項來設定。設定較大的擴展大小有助於避免片段化,並促進大量資料的擷取。

若要設定每個表格的表空間的擴展大小,請在 CREATE TABLEALTER TABLE 陳述式中指定 AUTOEXTEND_SIZE 大小

CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;

ALTER TABLE t1 AUTOEXTEND_SIZE = 8M;

若要設定通用表空間的擴展大小,請在 CREATE TABLESPACEALTER TABLESPACE 陳述式中指定 AUTOEXTEND_SIZE 大小

CREATE TABLESPACE ts1 AUTOEXTEND_SIZE = 4M;

ALTER TABLESPACE ts1 AUTOEXTEND_SIZE = 8M;
注意

AUTOEXTEND_SIZE 選項也可以在建立復原表空間時使用,但復原表空間的擴展行為有所不同。如需更多資訊,請參閱第 17.6.3.4 節「復原表空間」

AUTOEXTEND_SIZE 設定必須是 4M 的倍數。指定不是 4M 倍數的 AUTOEXTEND_SIZE 設定會傳回錯誤。

AUTOEXTEND_SIZE 預設設定為 0,這會導致表空間依照上述預設行為進行擴展。

允許的最大 AUTOEXTEND_SIZE 為 4GB。最大表空間大小請參考第 17.21 節,「InnoDB 限制」

最小的 AUTOEXTEND_SIZE 設定取決於 InnoDB 頁面大小,如下表所示

InnoDB 頁面大小 最小 AUTOEXTEND_SIZE
4K 4M
8K 4M
16K 4M
32K 8M
64K 16M

預設的 InnoDB 頁面大小為 16K (16384 位元組)。要確定您的 MySQL 執行個體的 InnoDB 頁面大小,請查詢 innodb_page_size 設定。

mysql> SELECT @@GLOBAL.innodb_page_size;
+---------------------------+
| @@GLOBAL.innodb_page_size |
+---------------------------+
|                     16384 |
+---------------------------+

當表空間的 AUTOEXTEND_SIZE 設定被修改時,之後發生的第一次擴展會將表空間大小增加到 AUTOEXTEND_SIZE 設定的倍數。後續的擴展則為設定的大小。

當使用非零的 AUTOEXTEND_SIZE 設定建立每個表格一個檔案的表空間或一般表空間時,表空間會初始化為指定的 AUTOEXTEND_SIZE 大小。

ALTER TABLESPACE 無法用於設定每個表格一個檔案的表空間的 AUTOEXTEND_SIZE。必須使用 ALTER TABLE

對於在每個表格一個檔案的表空間中建立的表格,SHOW CREATE TABLE 僅在 AUTOEXTEND_SIZE 選項設定為非零值時才會顯示。

要確定任何 InnoDB 表空間的 AUTOEXTEND_SIZE,請查詢資訊綱要 INNODB_TABLESPACES 表格。例如:

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'test/t1';
+---------+-----------------+
| NAME    | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 |         4194304 |
+---------+-----------------+

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'ts1';
+------+-----------------+
| NAME | AUTOEXTEND_SIZE |
+------+-----------------+
| ts1  |         4194304 |
+------+-----------------+
注意

AUTOEXTEND_SIZE 為 0 (預設設定) 表示表空間會根據上述預設表空間擴展行為進行擴展。