CREATE TABLESPACEtablespace_name
ADD DATAFILE 'file_name
' USE LOGFILE GROUPlogfile_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
ステートメントを利用してテーブル領域にデータファイルを追加することができます。項8.1.8. 「ALTER TABLESPACE
構文」
を参照してください)。テーブル領域の命名を管理する規則については、項5.2. 「スキーマオブジェクト名」
を参照してください。
すべての MySQL Cluster ディスクデータオブジェクトが同じ名前空間を共有します。つまり、各ディスクデータオブジェクトは (単に、特定の型の各ディスクデータオブジェクトというだけでなく) 一意に名前が付けられている必要があります。たとえば、テーブル領域とログファイルグループを同じ名前にしたり、テーブル領域とデータファイルを同じ名前にしたりすることはできません。
MySQL Cluster NDB 6.2.17、6.3.23、および 6.4.3 より前のバージョンでは、データファイルのパスとファイル名を 128 文字より長くすることができませんでした。(Bug#31770)
1 つ、または複数の
UNDO
ログファイルのログファイルグループは
USE LOGFILE GROUP
節を利用して作成するためにテーブル領域に割り当てる必要があります。logfile_group
は CREATE LOGFILE GROUP
で作成した既存在ログファイルグループでなければいけません。項8.1.14. 「CREATE LOGFILE GROUP
構文」
を参照してください)。複数のテーブル領域は
UNDO
ロギングに同じログファイルグループを利用するでしょう。
EXTENT_SIZE
は、テーブル領域に属するすべてのファイルに利用される範囲で、サイズをバイトで設定します。デフォルト値は
1M です。最小サイズは 32K
であり、理論的な最大サイズは 2G
です。ただし、実際的な最大サイズはいくつかの要因によって異なります。ほとんどの場合は、エクステントサイズを変更してもパフォーマンスに測定可能な影響を与えることはないため、特別な状況を除き、常にデフォルト値を使用することをお勧めします。
extent
はディスクスペース割り当てのユニットです。1
つの範囲は、別の範囲が利用されるまで、可能なかぎりのできるだけ多くのデータで満たされます。理論上は、データファイルあたり最大
65,535 (64K)
個のエクステントを使用できます。ただし、推奨される最大数は
32,768 (32K) です。1
つのデータファイルの推奨される最大サイズは
32G (つまり、32K
個のエクステント×エクステントあたり 1MB)
です。さらに、エクステントを特定のパーティションに割り当てたあと、そのエクステントを使用して別のパーティションのデータを格納することはできません。エクステントには、複数のパーティションのデータを格納できません。つまり、たとえば、INITIAL_SIZE
が 256 M
バイトで、EXTENT_SIZE
が 128M である 1
つのデータファイルを含むテーブル領域にはエクステントが
2
つしか存在しないため、このテーブル領域を使用して最大
2
つの異なるディスクデータテーブルパーティションのデータを格納できます。
INFORMATION_SCHEMA.FILES
テーブルをクエリーすることによって、特定のデータファイルに未使用のまま残っているエクステントの数を確認できるため、ファイル内の空き容量の概算値を導き出すことができます。更なる情報や例に関しては、The INFORMATION_SCHEMA FILES
Table
を参照してください。
INITIAL_SIZE
パラメータはデータファイルの合計サイズをバイトで設定します。一度データファイルが作成されると、そのサイズは変更できませんが、追加の
ALTER TABLESPACE ... ADD
DATAFILE
を利用することによりテーブル領域により多くのデータファイルを追加することができます。項8.1.8. 「ALTER TABLESPACE
構文」
を参照してください。
INITIAL_SIZE
はオプションです。そのデフォルト値は
128M
です。
32
ビットシステムでは、INITIAL_SIZE
のサポートされる最大値は
4G
です。(Bug#29186)
EXTENT_SIZE
や
INITIAL_SIZE
を設定するとき
(片方、または両方)、my.cnf
で利用されているものと同様、大きさによって一文字の省略形を持つ数字に従うこともできます。通常これは
M
(メガバイト) か
G
(ギガバイト)
のどちらかの文字です。
AUTOEXTEND_SIZE
、MAX_SIZE
、NODEGROUP
、WAIT
、および
COMMENT
は解析されますが、無視されます。そのため、MySQL
5.1
には影響しません。これらのオプションは、将来の拡張のために用意されています。
ENGINE
パラメータによって、このテーブル領域で使用されるストレージエンジンが決定され、ストレージエンジンの名前が
engine_name
になります。MySQL
5.1 では、engine_name
は
NDB
または
NDBCLUSTER
のどちらかの値である必要があります。
CREATE TABLESPACE ... ADD
DATAFILE
が 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)
(詳しくは The INFORMATION_SCHEMA FILES
Table
を参照してください。)
CREATE TABLESPACE
は、MySQL
5.1.6 で追加されました。MySQL 5.1 では、MySQL
Cluster
のディスクデータストレージで使用する場合のみ有効です。MySQL Cluster Disk Data Tables
を参照してください。