MySQL 8.0 リファレンスマニュアル


15.6.3.9 テーブルスペースの AUTOEXTEND_SIZE 構成

デフォルトでは、file-per-table または general テーブルスペースに追加の領域が必要な場合、テーブルスペースは次の規則に従って増分的に拡張されます:

  • テーブルスペースのサイズがエクステントより小さい場合は、一度に 1 ページずつ拡張されます。

  • テーブルスペースが 1 エクステントより大きいが、サイズが 32 エクステントより小さい場合は、一度に 1 エクステントずつ拡張されます。

  • テーブルスペースのサイズが 32 エクステントを超える場合は、一度に 4 エクステント拡張されます。

エクステントサイズの詳細は、セクション15.11.2「ファイル領域管理」 を参照してください。

MySQL 8.0.23 では、file-per-table または general テーブルスペースを拡張する量は、AUTOEXTEND_SIZE オプションを指定することで構成できます。 拡張サイズを大きく構成すると、断片化を回避し、大量のデータの収集を容易にすることができます。

file-per-table テーブルスペースの拡張子サイズを構成するには、CREATE TABLE または ALTER TABLE ステートメントで AUTOEXTEND_SIZE サイズを指定します:

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

一般的なテーブルスペースの拡張サイズを構成するには、CREATE TABLESPACE ステートメントまたは ALTER TABLESPACE ステートメントで AUTOEXTEND_SIZE サイズを指定します:

CREATE TABLESPACE ts1 AUTOEXTEND_SIZE = 4M;
ALTER TABLESPACE ts1 AUTOEXTEND_SIZE = 8M;
注記

AUTOEXTEND_SIZE オプションは、UNDO テーブルスペースの作成時にも使用できますが、UNDO テーブルスペースの拡張動作は異なります。 詳細は、セクション15.6.3.4「undo テーブルスペース」を参照してください。

AUTOEXTEND_SIZE 設定は 4M の倍数である必要があります。 4M の倍数ではない AUTOEXTEND_SIZE 設定を指定すると、エラーが返されます。

AUTOEXTEND_SIZE のデフォルト設定は 0 で、テーブルスペースは前述のデフォルトの動作に従って拡張されます。

AUTOEXTEND_SIZE の最大設定は 64M です。

次のテーブルに示すように、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 設定で file-per-table または general テーブルスペースが作成されると、テーブルスペースは指定された AUTOEXTEND_SIZE サイズで初期化されます。

ALTER TABLESPACE を使用して file-per-table テーブルスペースの AUTOEXTEND_SIZE を構成することはできません。 ALTER TABLE を使用する必要があります。

file-per-table テーブルスペースに作成されたテーブルの場合、SHOW CREATE TABLEAUTOEXTEND_SIZE オプションが表示されるのは、ゼロ以外の値に構成されている場合のみです。

InnoDB テーブルスペースの AUTOEXTEND_SIZE を確認するには、INFORMATION_SCHEMA.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 は、テーブルスペースが前述のデフォルトのテーブルスペース拡張動作に従って拡張されることを意味します。


関連キーワード:  InnoDB, テーブル, スペース, AUTOEXTEND, SIZE, 構成, サイズ, INFORMATION, SCHEMA, 設定