我想检查是否使用 查询为每个数据库表innodb_file_per_table
设置(即创建)。.ibd
MYSQL-5.5
有什么办法吗?
我想检查是否使用 查询为每个数据库表innodb_file_per_table
设置(即创建)。.ibd
MYSQL-5.5
有什么办法吗?
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
全局表SPACE
空间 (ibdata1) 将为 0,而 file-per-table 表空间则为更大的数字。
见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
在数据目录中使用。:-)