ALTER TABLESPACE tablespace_name
{ADD|DROP} DATAFILE 'file_name'
[INITIAL_SIZE [=] size]
[WAIT]
ENGINE [=] engine_name
このステートメントを使用すると、テーブルスペースへの新しいデータファイルの追加、またはテーブルスペースからのデータファイルの削除を実行できます。
ADD DATAFILE
バリアントでは、INITIAL_SIZE
句を使用して初期サイズを指定できます。ここで、size
はバイト単位で測定されます。デフォルト値は 134217728 (128M バイト) です。MySQL Cluster NDB 7.3.2 より前は、この値は数字で指定する必要がありました。(Bug #13116514、Bug #16104705、Bug #62858)。MySQL Cluster NDB 7.3.2 以降では、size
のあとにオプションで、my.cnf
で使用されるのと同様の、オーダーを示す 1 文字の略語を指定できます。一般に、これは M
(M バイト) または G
(G バイト) のどちらかの文字です。
すべての MySQL Cluster ディスクデータオブジェクトが同じ名前空間を共有します。つまり、各ディスクデータオブジェクトは (単に、特定の型の各ディスクデータオブジェクトというだけでなく)、一意の名前が付けられている必要があります。たとえば、テーブルスペースとデータファイルを同じ名前にしたり、Undo ログファイルとテーブルスペースを同じ名前にしたりすることはできません。
32 ビットシステム上では、INITIAL_SIZE
のサポートされる最大値は 4294967296 (4G バイト) です。(Bug #29186)
INITIAL_SIZE
は、CREATE TABLESPACE
と同様に明示的に丸められます。
データファイルが作成されたあと、そのサイズを変更することはできません。ただし、追加の ALTER TABLESPACE ... ADD DATAFILE
ステートメントを使用して、テーブルスペースにさらに多くのデータファイルを追加できます。
DROP DATAFILE
を ALTER TABLESPACE
とともに使用すると、テーブルスペースからデータファイル 'file_name
' が削除されます。いずれかのテーブルが使用しているテーブルスペースからはデータファイルを削除できません。つまり、そのデータファイルが空である (エクステントが使用されていない) ことが必要です。セクション18.5.12.1「MySQL Cluster ディスクデータオブジェクト」を参照してください。さらに、削除されるデータファイルはすべて、CREATE TABLESPACE
または ALTER TABLESPACE
で以前にそのテーブルスペースに追加されている必要があります。
ALTER TABLESPACE ... ADD DATAFILE
と ALTER TABLESPACE ... DROP DATAFILE
のどちらにも、そのテーブルスペースによって使用されるストレージエンジンを指定する ENGINE
句が必要です。現在、engine_name
として受け入れられる値は NDB
と NDBCLUSTER
だけです。
WAIT
は解析されますが、それ以外は無視されるため、MySQL 5.6 では何の効果もありません。これは将来の拡張のために用意されています。
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.30.1「INFORMATION_SCHEMA FILES テーブル」を参照してください。
ALTER TABLESPACE
は、MySQL Cluster のディスクデータストレージでのみ有効です。セクション18.5.12「MySQL Cluster ディスクデータテーブル」を参照してください。