innodb_file_per_table
クエリを使用して、データベーステーブルごとに.ibd
が設定されている(つまり、MYSQL-5.5
が作成されている)かどうかを確認したいと思います。
それを行う方法はありますか?
SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
SPACE
は、グローバル表領域(ibdata1)の場合は0になり、ファイルごとの表領域の場合はさらに大きくなります。
http://dev.mysql.com/doc/refman/5.6/en/innodb-sys-tables-table.html を参照してください
MySQL 5.5を使用しているため、上記のソリューションは機能しません。 MySQL 5.5では、これを使用できます。
SELECT DISTINCT TABLE_NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU
WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE 'SYS%';
この場合も、SPACEはグローバル表領域の場合は0であり、ファイルごとの整数の場合はそれよりも大きくなります。
バッファプールにページがあるテーブルについてのみレポートするという警告があります。テーブルをクエリしていない場合、バッファプールLRUにページがなく、クエリはそのテーブルの結果を報告しません。
他の唯一の解決策は、データディレクトリでls
を使用することです。 :-)
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)