【发布时间】:2010-09-17 19:57:57
【问题描述】:
我的 MySQL 数据库包含多个使用不同存储引擎的表 (特别是 myisam 和 innodb)。我怎样才能找出哪些表是 使用哪个引擎?
【问题讨论】:
我的 MySQL 数据库包含多个使用不同存储引擎的表 (特别是 myisam 和 innodb)。我怎样才能找出哪些表是 使用哪个引擎?
【问题讨论】:
SHOW TABLE STATUS WHERE Name = 'xxx'
这会给你(除其他外)一个Engine 列,这就是你想要的。
【讨论】:
show full columns from t1 时引擎信息不显示?
要显示数据库中所有表及其引擎的列表,请使用以下 SQL 查询:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
将dbname 替换为您的数据库名称。
【讨论】:
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
COUNT(*) 和 GROUP BY 之类的操作。
SHOW CREATE TABLE <tablename>;
比SHOW TABLE STATUS 更难解析但更易读。
【讨论】:
或者只是
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,请右键单击表格并选择alter table。
在该窗口中,您可以看到您的表引擎并对其进行更改。
【讨论】:
另一种方式,也许是获取单个或匹配的一组表状态的最短途径:
SHOW TABLE STATUS LIKE 'table';
然后您可以使用 LIKE 运算符,例如:
SHOW TABLE STATUS LIKE 'field_data_%';
【讨论】:
如果你是 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)
如果你在 linux 上,你可能会喜欢这个,至少。
将打开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
.
.
.
【讨论】:
到 information_schema 数据库那里你会找到'tables'表然后选择它;
Mysql>使用information_schema; mysql> select table_name,engine from tables;
【讨论】:
如果你是一个 GUI 人并且只想在 PhpMyAdmin 中找到它,那么选择你选择的表并转到 Operations 选项卡 >> @ 987654322@ >> Storage Engine。
您甚至可以使用下拉选项列表从那里更改它。
PS:本指南基于 PhpMyAdmin 4.8 版。不能保证旧版本的路径相同。
【讨论】:
除了前面条目中显示的示例外,您还可以使用标准查询从 information_schema db 中获取,如下所示:
use information_schema;
select NAME from INNODB_TABLES where NAME like "db_name%";
【讨论】: