Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  File-Per-Table モードの有効化および無効化

14.5.3 File-Per-Table モードの有効化および無効化

file-per-table モードを MySQL サーバーのデフォルトにするには、--innodb_file_per_table コマンド行オプションでサーバーを起動するか、my.cnf[mysqld] セクションに次の行を追加します。

[mysqld]
innodb_file_per_table

サーバーが動作している間に、コマンドを発行することもできます。

SET GLOBAL innodb_file_per_table=1;

file-per-table モードが有効な場合、InnoDB は、適切なデータベースディレクトリ内の独自の tbl_name.ibd ファイルに、新しく作成された各テーブルを格納します。MyISAM ストレージエンジンとは異なり、インデックスとデータにそれぞれ tbl_name.MYDtbl_name.MYI ファイルがあると、InnoDB はデータとインデックスを一緒に 1 つの .ibd ファイルに格納します。それでも、tbl_name.frm ファイルは従来どおり作成されます。

使用する起動オプションから innodb_file_per_table を削除してサーバーを再起動する場合、または SET GLOBAL コマンドでオプションをオフにした場合、InnoDB はシステムのテーブルスペース内に新しいテーブルを作成します。

file-per-table 設定にかかわらず、InnoDB テーブルの読み取りおよび書き込みは常に実行できます。

テーブルをシステムテーブルスペースから自身のテーブルスペースへ移動するには、またはその反対方向にテーブルを移動するには、innodb_file_per_table 設定を変更してテーブルを再作成します。

-- Move table from system tablespace to its own tablespace.
SET GLOBAL innodb_file_per_table=1;
ALTER TABLE table_name ENGINE=InnoDB;
-- Move table from its own tablespace to system tablespace.
SET GLOBAL innodb_file_per_table=0;
ALTER TABLE table_name ENGINE=InnoDB;
注記

InnoDB は、内部のデータディクショナリUndo ログをシステムのテーブルスペースに配置するため、常にこのテーブルスペースが必要です。.ibd ファイルは InnoDB が動作するのには十分ではありません。

システムテーブルスペースから独自の .ibd ファイルにテーブルが移動された場合、システムテーブルスペースを構成するデータファイルのサイズは維持されます。以前にテーブルが占有したスペースは、新しい InnoDB データ用に再利用できますが、オペレーティングシステム用には再利用されません。システムテーブルスペースから、ディスクスペースが限られているところへ大規模な InnoDB テーブルを移動する場合、innodb_file_per_table をオンにしてから mysqldump コマンドを使用してインスタンス全体を再作成することをお勧めします。


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