[+/-]
InnoDB
テーブルを作成するためには、CREATE
TABLE
ステートメント内で
ENGINE = InnoDB
オプションを指定してください:
CREATE TABLE customers (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;
このステートメントは、my.cnf
内で指定したデータファイルで構成されている
InnoDB
テーブル領域内のカラム
a
上でテーブルとインデックスを作成します。さらに、MySQL
は MySQL データベースディレクトリ下の
test
ディレクトリ内でファイル
customers.frm
を作成します。内部的に、InnoDB
はそれ自体のデータ辞書のテーブルにエントリを追加します。そのエントリはデータベース名を含んでいます。たとえば、もし
test
が
customers
テーブルが作成されたデータベースであれば、エントリは
'test/customers'
のためのものになります。これは、ほかのいくつかのデータベース内で、同名
customers
のテーブルを作成することができ、そしてそのテーブル名は
InnoDB
内で衝突しないということを意味します。
InnoDB
テーブルに
SHOW TABLE STATUS
ステートメントを発行することで、InnoDB
テーブル領域内の空き領域の量をクエリーすることができます。テーブル領域の空き容量は、SHOW
TABLE STATUS
出力内の
Data_free
セクション
(MySQL 5.1.24 より前では
Comment
セクション)
に表示されます。例 :
SHOW TABLE STATUS FROM test LIKE 'customers'
SHOW
が
InnoDB
テーブルのために表示する統計は単なる概算です。それらは
SQL
最適化の中で利用されます。しかしテーブルやインデックスの、準備されていたバイトでのサイズは正確です。