我想检查是否使用MYSQL-5.5 query为每个数据库表设置了innodb_file_per_table (即创建了.ibd )。
有什么办法可以做到吗?
发布于 2014-03-26 12:53:24
SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;对于全局表空间(ibdata1),SPACE将为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,对于每个表的文件,SPACE是更大的整数。
但需要注意的是,它只报告缓冲池中有页的表。如果您还没有查询表,它在缓冲池LRU中将没有页面,并且查询不会报告该表的任何结果。
唯一的其他解决方案是在数据目录中使用ls。:-)
发布于 2015-06-19 20:28:54
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)https://stackoverflow.com/questions/22651656
复制相似问题