Meine MySQL-Datenbank enthält mehrere Tabellen mit verschiedenen Speicher-Engines (insbesondere myisam und innodb). Wie kann ich herausfinden, welche Tabellen welche Engine verwenden?
Meine MySQL-Datenbank enthält mehrere Tabellen mit verschiedenen Speicher-Engines (insbesondere myisam und innodb). Wie kann ich herausfinden, welche Tabellen welche Engine verwenden?
Antworten:
SHOW TABLE STATUS WHERE Name = 'xxx'
Dadurch erhalten Sie (unter anderem) eine Engine
Spalte, die Sie möchten.
show full columns from t1
?
Verwenden Sie diese SQL-Abfrage, um eine Liste aller Tabellen in einer Datenbank und ihrer Engines anzuzeigen:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
Ersetzen Sie dbname
durch Ihren Datenbanknamen.
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
COUNT(*)
und tun kann GROUP BY
.
oder nur
show table status;
Nur dass dadurch alle Tabellen in Ihrer Datenbank aufgelistet werden.
Eine kleine Änderung an Jockers Antwort (ich würde als Kommentar posten, aber ich habe noch nicht genug Karma):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
Dies schließt MySQL-Ansichten aus der Liste aus, die keine Engine haben.
mysqlshow -i <database_name>
zeigt die Informationen für alle Tabellen einer bestimmten Datenbank an.
mysqlshow -i <database_name> <table_name>
wird dies nur für eine bestimmte Tabelle tun.
Noch ein anderer Weg, vielleicht der kürzeste, um den Status eines einzelnen oder übereinstimmenden Satzes von Tabellen zu erhalten:
SHOW TABLE STATUS LIKE 'table';
Sie können dann beispielsweise LIKE-Operatoren verwenden:
SHOW TABLE STATUS LIKE 'field_data_%';
Wenn Sie ein Linux-Benutzer sind:
Um die Motoren zu zeigen für alle Tabellen für alle Datenbanken auf einem MySQL - Server, ohne Tabellen information_schema
, mysql
, performance_schema
:
less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------"; mysql -e "use $i; show table status;"; done } | column -t)
Sie könnten dies lieben, wenn Sie zumindest unter Linux sind.
Öffnet alle Informationen für alle Tabellen in less
, drücken Sie -S
, um zu lange Zeilen zu hacken.
Beispielausgabe:
--------------------information_schema--------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time C
CHARACTER_SETS MEMORY 10 Fixed NULL 384 0 16434816 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATIONS MEMORY 10 Fixed NULL 231 0 16704765 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATION_CHARACTER_SET_APPLICABILITY MEMORY 10 Fixed NULL 195 0 16357770 0 0 NULL 2015-07-13 15:48:45 NULL N
COLUMNS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
COLUMN_PRIVILEGES MEMORY 10 Fixed NULL 2565 0 16757145 0 0 NULL 2015-07-13 15:48:45 NULL N
ENGINES MEMORY 10 Fixed NULL 490 0 16574250 0 0 NULL 2015-07-13 15:48:45 NULL N
EVENTS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
FILES MEMORY 10 Fixed NULL 2677 0 16758020 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_STATUS MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_VARIABLES MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
KEY_COLUMN_USAGE MEMORY 10 Fixed NULL 4637 0 16762755 0
.
.
.
Gehen Sie zur Datenbank information_schema, dort finden Sie die Tabelle 'tables' und wählen Sie sie aus.
MySQL> benutze information_schema; MySQL> Wählen Sie Tabellenname, Engine aus Tabellen;
Wenn Sie ein GUI- Typ sind und es nur in PhpMyAdmin finden möchten , wählen Sie die Tabelle Ihrer Wahl aus und gehen Sie über die Operations
Registerkarte >> Table options
>> Storage Engine
. Sie können es sogar von dort aus mithilfe der Dropdown-Optionsliste ändern.
PS: Dieses Handbuch basiert auf Version 4.8 von PhpMyAdmin. Kann nicht den gleichen Pfad für sehr ältere Versionen garantieren.