13.1.18 CREATE TABLESPACE 構文

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_SIZEEXTENT_SIZE、および UNDO_BUFFER_SIZE は、次のような丸めに従います。

  • EXTENT_SIZEUNDO_BUFFER_SIZE はそれぞれ、32K のもっとも近い整数倍に切り上げられます。

  • INITIAL_SIZE は、32K のもっとも近い整数倍に切り下げられます。

    データファイルの場合は、INITIAL_SIZE に対してさらに丸め処理が行われます。今得られた結果が (すべての丸めのあと) EXTENT_SIZE のもっとも近い整数倍に切り上げられます。

今説明した丸めは明示的に実行され、このような丸めのいずれかが実行された場合は MySQL Server によって警告が発行されます。丸められた値はまた、INFORMATION_SCHEMA.FILES カラム値の計算やその他の目的のために、NDB カーネルでも使用されます。ただし、予期しない結果が発生しないようにするために、これらのオプションの指定では常に 32K の整数倍を使用することをお勧めします。

AUTOEXTEND_SIZEMAX_SIZENODEGROUPWAIT、および COMMENT は解析されますが、無視されるため、現在は何の効果もありません。これらのオプションは、将来の拡張のために用意されています。

ENGINE パラメータは、このテーブルスペースが使用するストレージエンジンを決定します。ここで、engine_name はそのストレージエンジンの名前です。現在、engine_name は、値 NDB または NDBCLUSTER のいずれかである必要があります。

CREATE TABLESPACEENGINE = 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 ディスクデータテーブル」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.