ALTER TABLESPACEtablespaceADD DATAFILE 'file' INITIAL_SIZE [=]sizeENGINE [=]engineALTER TABLESPACEtablespaceDROP DATAFILE 'file' ENGINE [=]engine
このステートメントは新しいデータ ファイルを追加する時かテーブルスペースからデータ ファイルをドロップする時に利用する事ができます。
ADD DATAFILE 異形では、size がバイトで計算され、INITIAL_SIZE 構文を利用して初期のサイズを指定する事が要求されます。my.cnf で利用されている物と同様、大きさによって一文字の省略形を持つ整数値に従う事もできます。通常これは M (メガ バイト) か G (ギガ バイト)のどちらかの文字です。
一度データ ファイルが作成されると、そのサイズは変更できませんが、追加の ALTER TABLESPACE ... ADD DATAFILE ステートメントを利用する事によりテーブルスペースにより多くのデータ ファイルを追加する事ができます。
DROP DATAFILE を ALTER TABLESPACE と共に利用する事で、テーブルスペースから 'file' をドロップする事ができます。このファイルは CREATE TABLESPACE か ALTER TABLESPACE を利用してテーブルスペースに既に追加されていなければいけません。そうでなければエラーが発生します。
ALTER TABLESPACE ... ADD DATAFILE と ALTER TABLESPACE ... DROP DATAFILE の2つは、テーブルスペースに利用されるストレージ エンジンを指定する ENGINE 条項を必要とします。MySQL 5.1では、engine に受け入れられる値は NDB と NDBCLUSTER だけです。
ALTER TABLESPACE ... ADD DATAFILE が ENGINE = 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 ディスク データ ストレージ」 を参照してください。