/ / Un moyen de vérifier si innodb_file_per_table est défini dans MYSQL 5.5 par table? - mysql, innodb, information-schema, mysql-5.5

Un moyen de vérifier si innodb_file_per_table est défini dans MYSQL 5.5 par table? - mysql, innodb, information-schema, mysql-5.5

Je veux vérifier si innodb_file_per_table est réglé (i.e .ibd est créé) pour chaque table de base de données en utilisant MYSQL-5.5 question.

Un moyen de le faire?

Réponses:

10 pour la réponse № 1
SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;

le SPACE sera égal à 0 pour le tablespace global (ibdata1) et à un nombre supérieur pour les tablespaces fichier par table.

Voir http://dev.mysql.com/doc/refman/5.6/en/innodb-sys-tables-table.html


Puisque vous utilisez MySQL 5.5, la solution ci-dessus ne fonctionnera pas. Dans MySQL 5.5, vous pouvez utiliser ceci:

SELECT DISTINCT TABLE_NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU
WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE "SYS%";

De nouveau, SPACE a la valeur 0 pour l’espace table global et de plus grands entiers pour le fichier par table.

Avec l'avertissement qu'il ne rapporte que sur les tablesqui ont des pages dans le pool de mémoire tampon. Si vous n'avez pas interrogé une table, le pool de mémoire tampon LRU ne contiendra aucune page et la requête ne signalera aucun résultat pour cette table.

La seule autre solution est d'utiliser ls dans le répertoire de données. :-)


36 pour la réponse № 2
mysql> show variables like "innodb_file_per_table";
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)