InnoDB型テーブル用のファイル

広告

前のページMyISAM型のテーブルについて確認しました。今度はInnoDB型のテーブルで試してみます。

「books」データベースの中に「magazine」テーブルを作成します。

mysql> create table magazine(id int) engine=InnoDB;

p3-1

ではデータディレクトリの中の「books」ディレクトリの中を確認して下さい。

p3-2

「テーブル名.frm」というファイルが1つ作成されています。このファイルは次のような目的で使用されます。

table_name.frm      テーブル定義の保存

テーブルに含まれるデータやインデックスについては全テーブルで共有のファイルに対して書き込まれていきます。デフォルトの設定ではデータベース毎のディレクトリではなくデータディレクトリの中に次のファイルを作成します。

ibdata1            テーブルデータやインデックスの保存
ib_logfile0        トランザクションログファイル
ib_logfile1        トランザクションログファイル

p3-3

このようにテーブル毎に作成されるテーブル定義ファイル以外はInnoDB型のテーブルのデータは共通のファイルを使って管理されます。

データファイル

データを保存するファイルはデフォルトの設定では1つとなっており、10MBのサイズです。多くのデータが格納されて容量が足りなくなると自動で拡張されるように設定されています。デフォルトの設定は次のように入力することで確認できます。

mysql> show variables like 'innodb_data_file_path';

p3-4

取得した値は次のようになっています。

+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
+-----------------------+------------------------+

1つのファイルで管理するのではなく複数のファイルを指定してデータを管理することもできます。またファイル毎に拡張可能な最大サイズなども指定することもできます。この値を変更することは可能ですが、単に値を変更すればいいだけではありません。詳しい手順についてはまた別のページで確認します。

トランザクションログファイル

トランザクションログファイルは複数のファイルを使ってローテーションしながら記録していきます。

次のように入力することで現在の設定を確認できます。

mysql> show variables like 'innodb_log_file_%';

p3-5

取得した値は次のようになっています。

+---------------------------+----------+
| Variable_name             | Value    |
+---------------------------+----------+
| innodb_log_file_size      | 10485760 |
| innodb_log_files_in_group | 2        |
+---------------------------+----------+

デフォルトの設定では1つのファイルサイズが10MB、ファイル数は2つでローテーションを行います。この値は変更することが可能ですが、具体的な手順についてはまた別のページで解説します。

テーブルの削除

先ほど作成したテーブルを削除してみます。次のように入力して下さい。

mysql> drop table magazine;

p3-6

テーブル「magazine」が削除されました。では改めてデータディレクトリの中の「books」ディレクトリの中を見てみます。

p3-7

「magazine」テーブル用の1つのファイルが削除されていることが確認できます。

ただこの場合でもInnoDBで共有して使っているデータファイルとトランザクションログファイルは削除されません。

p3-8

( Written by Tatsuo Ikura )