Chcę sprawdzić, czy innodb_file_per_table
jest ustawiony (tj .ibd
jest tworzony) dla każdej tabeli bazy danych za pomocą MYSQL-5.5
pytanie.
Jakikolwiek sposób to zrobić?
Odpowiedzi:
10 dla odpowiedzi № 1SELECT NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
The SPACE
będzie wynosił 0 dla globalnego obszaru tabel (ibdata1) i pewnej większej liczby dla obszarów tabel dla plików na tabelę.
Widzieć http://dev.mysql.com/doc/refman/5.6/en/innodb-sys-tables-table.html
Ponieważ używasz MySQL 5.5, powyższe rozwiązanie nie będzie działać. W MySQL 5.5 możesz użyć tego:
SELECT DISTINCT TABLE_NAME, SPACE FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU
WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE "SYS%";
Ponownie, SPACE wynosi 0 dla globalnego obszaru tabel i większe liczby całkowite dla file-per-table.
Z zastrzeżeniem, że raportuje tylko na stołachktóre mają strony w puli buforów. Jeśli nie wysłałeś zapytania do tabeli, nie będzie ona miała stron w puli buforów LRU, a zapytanie nie będzie raportować żadnych wyników dla tej tabeli.
Jedynym innym rozwiązaniem jest użycie ls
w katalogu danych. :-)
36 dla odpowiedzi nr 2
mysql> show variables like "innodb_file_per_table";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)