CREATE TABLESPACE tablespace_name
ADD DATAFILE 'file_name'
USE LOGFILE GROUP logfile_group
[EXTENT_SIZE [=] extent_size]
[INITIAL_SIZE [=] initial_size]
[AUTOEXTEND_SIZE [=] autoextend_size]
[MAX_SIZE [=] max_size]
[NODEGROUP [=] nodegroup_id]
[WAIT]
[COMMENT [=] comment_text]
ENGINE [=] engine_name
このステートメントは、テーブルスペースを作成するために使用されます。テーブルスペースは 1 つ以上のデータファイルを含むことができ、テーブルのストレージ領域を提供します。このステートメントを使用して 1 つのデータファイルが作成され、テーブルスペースに追加されます。ALTER TABLESPACE
ステートメントを使用して、テーブルスペースにデータファイルを追加できます (セクション13.1.8「ALTER TABLESPACE 構文」を参照してください)。テーブルスペースの命名を管理するルールについては、セクション9.2「スキーマオブジェクト名」を参照してください。
すべての MySQL Cluster ディスクデータオブジェクトが同じ名前空間を共有します。つまり、各ディスクデータオブジェクトは (単に、特定の型の各ディスクデータオブジェクトというだけでなく)、一意の名前が付けられている必要があります。たとえば、テーブルスペースとログファイルグループを同じ名前にしたり、テーブルスペースとデータファイルを同じ名前にしたりすることはできません。
作成されるテーブルスペースには、USE LOGFILE GROUP
句を使用して、1 つ以上の UNDO
ログファイルのログファイルグループを割り当てる必要があります。logfile_group
は、CREATE LOGFILE GROUP
で作成された既存のログファイルグループである必要があります (セクション13.1.14「CREATE LOGFILE GROUP 構文」を参照してください)。複数のテーブルスペースが UNDO
ロギングのために同じログファイルグループを使用できます。
EXTENT_SIZE
は、そのテーブルスペースに属するすべてのファイルによって使用されるエクステントのサイズ (バイト単位) を設定します。デフォルト値は 1M です。最小サイズは 32K であり、理論的な最大サイズは 2G です。ただし、実際的な最大サイズはいくつかの要因によって異なります。ほとんどの場合は、エクステントサイズを変更してもパフォーマンスに測定可能な影響を与えることはないため、特別な状況を除き、常にデフォルト値を使用することをお勧めします。
エクステントは、ディスク領域の割り当ての単位です。1 つのエクステントが、そのエクステントに収容できる量のデータでいっぱいになってから、別のエクステントが使用されます。理論上は、データファイルあたり最大 65,535 (64K) 個のエクステントを使用できます。ただし、推奨される最大数は 32,768 (32K) です。1 つのデータファイルの推奨される最大サイズは 32G (つまり、32K 個のエクステント × エクステントあたり 1M バイト) です。さらに、エクステントを特定のパーティションに割り当てたあと、そのエクステントを使用して別のパーティションのデータを格納することはできません。エクステントには、複数のパーティションのデータを格納できません。つまり、たとえば、INITIAL_SIZE
が 256M バイトで、EXTENT_SIZE
が 128M である 1 つのデータファイルを含むテーブルスペースにはエクステントが 2 つしか存在しないため、このテーブルスペースを使用して最大 2 つの異なるディスクデータテーブルパーティションのデータを格納できます。
INFORMATION_SCHEMA.FILES
テーブルをクエリーすることによって、特定のデータファイルに未使用のまま残っているエクステントの数を確認できるため、ファイル内の空き容量の概算値を導き出すことができます。それ以上の説明および例については、セクション21.30.1「INFORMATION_SCHEMA FILES テーブル」を参照してください。
INITIAL_SIZE
パラメータは、データファイルの合計サイズをバイト単位で設定します。ファイルが作成されたあと、そのサイズを変更することはできません。ただし、ALTER TABLESPACE ... ADD DATAFILE
を使用して、テーブルスペースにさらに多くのデータファイルを追加できます。セクション13.1.8「ALTER TABLESPACE 構文」を参照してください。
INITIAL_SIZE
はオプションです。そのデフォルト値は 134217728 (128M バイト) です。
32 ビットシステム上では、INITIAL_SIZE
のサポートされる最大値は 4294967296 (4G バイト) です。(Bug #29186)
EXTENT_SIZE
を設定する場合は、数値のあとにオプションで、my.cnf
で使用されるのと同様の、桁を示す 1 文字の略語を指定できます。一般に、これは M
(M バイト) または G
(G バイト) のどちらかの文字です。MySQL Cluster NDB 7.3.2 以降では、これらの略語は INITIAL_SIZE
を指定する場合もサポートされます。(Bug #13116514、Bug #16104705、Bug #62858)
INITIAL_SIZE
、EXTENT_SIZE
、および UNDO_BUFFER_SIZE
は、次のような丸めに従います。
EXTENT_SIZE
とUNDO_BUFFER_SIZE
はそれぞれ、32K のもっとも近い整数倍に切り上げられます。-
INITIAL_SIZE
は、32K のもっとも近い整数倍に切り下げられます。データファイルの場合は、INITIAL_SIZE に対してさらに丸め処理が行われます。今得られた結果が (すべての丸めのあと)
EXTENT_SIZE
のもっとも近い整数倍に切り上げられます。
今説明した丸めは明示的に実行され、このような丸めのいずれかが実行された場合は MySQL Server によって警告が発行されます。丸められた値はまた、INFORMATION_SCHEMA.FILES
カラム値の計算やその他の目的のために、NDB カーネルでも使用されます。ただし、予期しない結果が発生しないようにするために、これらのオプションの指定では常に 32K の整数倍を使用することをお勧めします。
AUTOEXTEND_SIZE
、MAX_SIZE
、NODEGROUP
、WAIT
、および COMMENT
は解析されますが、無視されるため、現在は何の効果もありません。これらのオプションは、将来の拡張のために用意されています。
ENGINE
パラメータは、このテーブルスペースが使用するストレージエンジンを決定します。ここで、engine_name
はそのストレージエンジンの名前です。現在、engine_name
は、値 NDB
または NDBCLUSTER
のいずれかである必要があります。
CREATE TABLESPACE
が ENGINE = NDB
とともに使用された場合は、テーブルスペースとそれに関連付けられたデータファイルが各クラスタデータノード上に作成されます。INFORMATION_SCHEMA.FILES
テーブルをクエリーすることによって、データファイルが作成されたことを確認したり、それらに関する情報を取得したりできます。例:
mysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA
-> FROM INFORMATION_SCHEMA.FILES
-> WHERE TABLESPACE_NAME = 'newts' AND FILE_TYPE = 'DATAFILE';
+--------------------+-------------+----------------+
| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |
+--------------------+-------------+----------------+
| lg_3 | newdata.dat | CLUSTER_NODE=3 |
| lg_3 | newdata.dat | CLUSTER_NODE=4 |
+--------------------+-------------+----------------+
2 rows in set (0.01 sec)
(セクション21.30.1「INFORMATION_SCHEMA FILES テーブル」を参照してください。)
CREATE TABLESPACE
は、MySQL Cluster のディスクデータストレージでのみ有効です。セクション18.5.12「MySQL Cluster ディスクデータテーブル」を参照してください。