我的MySQL数据库包含几个使用不同存储引擎的表 (特别是myisam和innodb)。我怎么知道是哪几张桌子呢 使用哪个引擎?< / p >
SHOW TABLE STATUS WHERE Name = 'xxx'
这将给你一个Engine列,这是你想要的。
Engine
SHOW CREATE TABLE <tablename>;
可解析性较差,但可读性比SHOW TABLE STATUS强。
SHOW TABLE STATUS
或者运行这个:
show table status;
这将列出数据库上的所有表和相关详细信息。
要显示数据库中所有表及其引擎的列表,使用下面的SQL查询:
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'dbname';
用你的数据库名替换dbname。
dbname
对Jocker的回复做了一点调整(我想作为评论发布,但我还没有足够的因果报应):
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
这将MySQL视图从列表中排除,因为它没有引擎。
SHOW CREATE TABLE <tablename>\G
它的格式会比输出更好吗
\G技巧对于许多其他查询/命令也很有用。
\G
转到information_schema数据库,你会发现'tables'表,然后选择它;
mysqlshow -i <database_name>
将显示特定数据库的所有表的信息。
mysqlshow -i <database_name> <table_name>
只对一个特定的表这样做。
还有另一种方法,可能是获取单个或匹配的表集状态的最短方法:
SHOW TABLE STATUS LIKE 'table';
然后你可以使用LIKE操作符,例如:
SHOW TABLE STATUS LIKE 'field_data_%';
如果你是linux用户:
显示mysql服务器上所有数据库的所有表的引擎,不包含表information_schema, mysql, performance_schema:
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)
你可能会喜欢这个,如果你在linux上,至少。
将打开less中所有表的所有信息,按-S删除过长的行。
less
-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 . . .
如果你正在使用MySQL工作台,右键单击一个表并选择alter table。
alter table
在这个窗口中,您可以看到您的表Engine,也可以更改它。
< img src = " https://i.stack.imgur.com/zc2Nx.png " alt = " / >
显示数据库表状态;
它将列出上述数据库中的所有表 示例输出< / >强
显示name=your_desired_table_name表状态;
它将显示上述表使用的存储引擎。
Operations
Table options
Storage Engine
PS:本指南基于PhpMyAdmin的4.8版本。不能保证非常旧的版本有相同的路径。
除了前面的例子外,你还可以从information_schema db中通过标准查询得到如下信息:
use information_schema; select NAME from INNODB_TABLES where NAME like "db_name%";