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 № 1SELECT 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)