我想使用innodb_file_per_table
查询检查每个数据库表是否已设置.ibd
(即MYSQL-5.5
已创建)。
有什么办法吗?
答案 0 :(得分:44)
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
答案 1 :(得分:14)
SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
对于全局表空间(ibdata1),SPACE
将为0,对于每表文件表空间,SELECT DISTINCT TABLE_NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU
WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE 'SYS%';
将为更大的数字。
请参阅http://dev.mysql.com/doc/refman/5.6/en/innodb-sys-tables-table.html
由于您使用的是MySQL 5.5,因此上述解决方案无效。在MySQL 5.5中,您可以使用:
ls
同样,全局表空间的SPACE为0,每个表的文件的整数更大。
需要注意的是,它只报告缓冲池中有页面的表。如果您还没有查询表,它将在缓冲池LRU中没有页面,并且查询将不会报告该表的任何结果。
唯一的其他解决方案是在数据目录中使用{{1}}。 : - )