web-dev-qa-db-ja.com

innodb_file_per_tableがテーブルごとにMYSQL5.5で設定されているかどうかを確認する方法はありますか?

innodb_file_per_tableクエリを使用して、データベーステーブルごとに.ibdが設定されている(つまり、MYSQL-5.5が作成されている)かどうかを確認したいと思います。

それを行う方法はありますか?

18
Dipak Ingole
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を使用することです。 :-)

18
Bill Karwin
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)
50