如何检查特定表的MySQL引擎types?

我的MySQL数据库包含几个使用不同存储引擎(特别是myisam和innodb)的表。 我怎样才能找出哪个表使用哪个引擎?

SHOW TABLE STATUS WHERE Name = 'xxx'

这将给你(除其他外)一个Engine列,这是你想要的。

要显示数据库及其引擎中所有表的列表,请使用以下SQL查询:

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

用您的数据库名称replacedbname

 SHOW CREATE TABLE <tablename>; 

SHOW TABLE STATUS相比,可parsing性较差但可读性较高。

要不就

show table status;

只是这样会列出数据库中的所有表。

对Jocker的回应进行调整(我会发表评论,但我没有足够的业力呢):

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

这排除了没有引擎的列表中的MySQL视图。

 SHOW CREATE TABLE <tablename>\G 

将格式化它比输出更好

 SHOW CREATE TABLE <tablename>; 

\G技巧对于许多其他查询/命令也是有用的。

 mysqlshow -i <database_name> 

将显示特定数据库的所有表的信息。

 mysqlshow -i <database_name> <table_name> 

将只为特定的表格。

如果您使用的是MySQL Workbench,则可以右键单击表并select“alter table”。

在那个窗口中,你可以看到你的表引擎,也可以改变它。

如果你是一个Linux用户:

为了显示mysql服务器上所有数据库的所有表的引擎,没有表information_schemamysqlperformance_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) 

至less,如果你在Linux上,你可能会喜欢这个。

将打开所有表格中的所有信息,按-S键切断太长的行。

示例输出:

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

去information_schema数据库那里你会发现'表'表然后select它;

Mysql>使用information_schema; Mysql>从表中selecttable_name,引擎;

另一种方式,也许最短的时间获得一个或一组匹配表的状态:

 SHOW TABLE STATUS LIKE 'table'; 

然后你可以使用LIKE运算符,例如:

 SHOW TABLE STATUS LIKE 'field_data_%';