ALTER TABLESPACE 構文

ALTER TABLESPACE tablespace
    ADD DATAFILE 'file'
    INITIAL_SIZE [=] size
    ENGINE [=] engine

ALTER TABLESPACE tablespace
    DROP DATAFILE 'file'
    ENGINE [=] engine

このステートメントは新しいデータ ファイルを追加する時かテーブルスペースからデータ ファイルをドロップする時に利用する事ができます。

ADD DATAFILE 異形では、size がバイトで計算され、INITIAL_SIZE 構文を利用して初期のサイズを指定する事が要求されます。my.cnf で利用されている物と同様、大きさによって一文字の省略形を持つ整数値に従う事もできます。通常これは M (メガ バイト) か G (ギガ バイト)のどちらかの文字です。

一度データ ファイルが作成されると、そのサイズは変更できませんが、追加の ALTER TABLESPACE ... ADD DATAFILE ステートメントを利用する事によりテーブルスペースにより多くのデータ ファイルを追加する事ができます。

DROP DATAFILEALTER TABLESPACE と共に利用する事で、テーブルスペースから 'file' をドロップする事ができます。このファイルは CREATE TABLESPACEALTER TABLESPACE を利用してテーブルスペースに既に追加されていなければいけません。そうでなければエラーが発生します。

ALTER TABLESPACE ... ADD DATAFILEALTER TABLESPACE ... DROP DATAFILE の2つは、テーブルスペースに利用されるストレージ エンジンを指定する ENGINE 条項を必要とします。MySQL 5.1では、engine に受け入れられる値は NDBNDBCLUSTER だけです。

ALTER TABLESPACE ... ADD DATAFILEENGINE = NDB と共に利用された時、データ ファイルがそれぞれのクラスタ データ ノード上に作成されます。INFORMATION_SCHEMA.FILES テーブルに問い合わせする事によってデータ ファイルが作成され、それらの情報を得た事を証明する事ができます。例えば、次のクエリは newts 名付けられたテーブルスペースに属する全てのデータ ファイルを表していす。

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 |
| lg_3               | newdata2.dat | CLUSTER_NODE=3 |
| lg_3               | newdata2.dat | CLUSTER_NODE=4 |
+--------------------+--------------+----------------+
2 rows in set (0.03 sec)

詳しくはこちらをを参照してください。項21.21. 「INFORMATION_SCHEMA FILES テーブル」

MySQL 5.1.6 では ALTER TABLESPACE が追加されました。MySQL 5.1 では MySQL クラスタの ディスク データ ストレージと一緒の時のみ利用する事ができます。詳しくは 項14.11. 「MySQL Cluster ディスク データ ストレージ」 を参照してください。