Jak mogę sprawdzić typ silnika MySQL pod kątem konkretnej tabeli?

Moja baza danych MySQL zawiera kilka tabel wykorzystujących różne silniki pamięci masowej (w szczególności myisam i innodb). Jak mogę dowiedzieć się, które tabele są używasz którego silnika?

Author: djf, 2008-10-17

11 answers

SHOW TABLE STATUS WHERE Name = 'xxx'

To da ci (między innymi) kolumnę Engine, która jest tym, czego chcesz.

 426
Author: Greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-17 19:30:09

Aby wyświetlić listę wszystkich tabel w bazie danych i ich silników, użyj tego zapytania SQL:

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

Zastąp dbname nazwą bazy danych.

 211
Author: Jocker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 08:07:49
SHOW CREATE TABLE <tablename>;

Mniej przetwarzalne, ale bardziej czytelne niż SHOW TABLE STATUS.

 48
Author: Javier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-12 13:08:52

Lub po prostu

show table status;

Tylko, że to wyświetli listę wszystkich tabel w Twojej bazie danych.

 38
Author: MArk Guadalupe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-19 04:29:20

Trochę podkręcona odpowiedź Jockera (wrzuciłbym jako komentarz, ale nie mam jeszcze wystarczająco dużo karmy):

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

To wyklucza widoki MySQL z listy, które nie mają silnika.

 12
Author: Evan Donovan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-12 16:31:17
SHOW CREATE TABLE <tablename>\G

Sformatuje go znacznie ładniej w porównaniu do wyjścia

SHOW CREATE TABLE <tablename>;

Sztuczka \G jest również przydatna do zapamiętania dla wielu innych zapytań/poleceń.

 9
Author: Nicholas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-13 18:18:32
mysqlshow -i <database_name>

Wyświetli informacje dla wszystkich tabel określonej bazy danych.

mysqlshow -i <database_name> <table_name> 

Zrobi to tylko dla konkretnej tabeli.

 4
Author: magic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 13:44:33

Jeśli używasz stołu roboczego MySQL, możesz kliknąć tabelę prawym przyciskiem myszy i wybrać "Zmień tabelę".

W tym oknie możesz zobaczyć swój silnik tabeli i również go zmienić.

 3
Author: T30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-24 07:58:55

Jeśli jesteś użytkownikiem Linuksa:

Aby pokazać silniki dla wszystkich tabel dla wszystkich baz danych na serwerze mysql, bez tabel 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)
Może Ci się to spodobać, jeśli przynajmniej jesteś na Linuksie.

Otworzy wszystkie informacje dla wszystkich tabel w less, Naciśnij -S, aby przeciąć zbyt długie linie.

Przykładowe wyjście:

--------------------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 

.
.
.
 2
Author: sjas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 13:52:16

Przejdź do bazy information_schema tam znajdziesz tabelę' tables ' i wybierz ją;

Mysql>use information_schema; Mysql> select table_name, engine from tables;

 0
Author: harsha vardhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-01 08:28:44

Jeszcze jeden sposób, być może najkrótszy, aby uzyskać status pojedynczego lub dopasowanego zestawu tabel:

SHOW TABLE STATUS LIKE 'table';

Możesz wtedy użyć takich operatorów na przykład:

SHOW TABLE STATUS LIKE 'field_data_%';
 0
Author: David Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-04 07:12:46