如何检查特定表的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_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)
至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_%';