我的MySQL数据库包含几个表,使用不同的存储引擎 (特别是myisam和innodb)。我怎样才能找出哪些表所使用的引擎 ?如何检查特定表的MySQL引擎类型?
回答
SHOW TABLE STATUS WHERE Name = 'xxx'
这会给你(除其他事项外)的Engine
列,这是你想要的。
SHOW CREATE TABLE <tablename>;
分辨率较低,但比SHOW TABLE STATUS
更具可读性。
或只是
show table status;
只是,这将LLIST您的数据库中的所有表。
由于某种原因在我的情况下返回0行... – 2014-01-16 16:10:17
要显示数据库中的所有表及其引擎列表,使用SQL查询:
替换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
伎俩输出
SHOW CREATE TABLE <tablename>\G
将其格式化好得多,也记住了很多其他的查询/命令非常有用。
去INFORMATION_SCHEMA数据库中,你会发现那么“表”表中选择它;
MySQL的“使用INFORMATION_SCHEMA; MySQL的“选择表名,从表引擎;
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
:
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
.
.
.
如果你使用MySQL的工作台,您可以用鼠标右键单击该表并选择“更改表”。
在该窗口中,您可以看到您的表格引擎并更改它。
- 1. Mysql导入引擎类型表HEAP
- 2. 如何在使用DataMapper时指定mysql存储引擎类型?
- 3. 选择Mysql引擎处理大型“类型值”表
- 4. 如何更改MySQL上的存储引擎类型?
- 5. 如何查询特定类型的NHibernate?
- 6. MYSQL引擎如何工作查询
- 7. 如何检查Json是否匹配特定的C#类型?
- 8. 检查特定列表索引的子类
- 9. 如何在编写mysql存储引擎时使用Field类型?
- 10. App引擎Java高级查询类型
- 11. 检查特定类的div
- 12. 如何检查列表中的特定精灵类
- 13. 如何检查正则表达式在类的特定功能?
- 14. 如何检查类型是一个给定的模板类型
- 15. 如何在C#中引用特定的类类型?
- 16. 如何检查MySQL中列的索引
- 17. 如何检查值类型?
- 18. 的MySQL索引用于特定查询
- 19. 查询检查索引及其类型
- 20. 如何检查参数类的类型?
- 21. 在Doctrine 2中指定表格类型/存储引擎
- 22. Rails 3,在拍卖类型引擎上锁定表
- 23. PHP的mysql选择引擎类型的统计
- 24. 检查类型被定义
- 25. 如何在Eclipse的工作区中查找类型特定的equals()引用?
- 26. 检查变量的类型是否是Python中的特定类型
- 27. 如何在Windows 8的HashSet中检查特定类型的对象?
- 28. 搜索引擎的SQL查询(PHP/MySQL)
- 29. 如何调整MySQL的存储引擎
- 30. 如何检查索引是否包含SQLite中的特定列
如果我的表被破坏,它只是显示引擎= NULL,并有一个“注释”告诉我修表。然而,在我知道如何修复表格之前,我猜我需要知道引擎(我没有那么诚实)。因此,@ Jocker的下面的评论对我更有帮助。 – harperville 2013-09-09 13:33:01
@Greg,我们应该使用这个还是Jocker的解决方案? – Pacerier 2015-02-24 05:30:26
@Prier - 两者都很好。不同之处在于这个解决方案给出了一个表的信息,而Jocker的解决方案显示了数据库中所有表的引擎类型(同时也具有更好的可读性)。 – kramer65 2016-03-20 08:36:56