【问题标题】:How do I know if a mysql table is using myISAM or InnoDB Engine?我如何知道 mysql 表使用的是 myISAM 还是 InnoDB 引擎?
【发布时间】:2011-05-29 18:23:27
【问题描述】:

在 MySQL 中,没有办法为某个数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定在一个会话期间使用的存储引擎:

SET storage_engine=InnoDB;

因此您不必为每个表指定它。

如果确实所有表都在使用 InnoDB,我该如何确认?

【问题讨论】:

标签: mysql innodb myisam storage-engines


【解决方案1】:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'

【讨论】:

  • 唯一需要注意的是INFORMATION_SCHEMA中的数据被缓存了,所以最好在你提供的语句之前使用FLUSH TABLES
  • 它可以帮助我计算数据库中 InnoDB 表的数量。
【解决方案2】:

show create table <table> 应该可以解决问题。

【讨论】:

    【解决方案3】:

    如果使用 SHOW CREATE TABLE,则必须将引擎解析出查询。

    从 INFORMATION_SCHEMA 数据库中选择是不好的做法,因为开发人员保留随时更改其架构的权利(尽管不太可能)。

    要使用的正确查询是 SHOW TABLE STATUS - 您可以获得有关数据库中所有表的信息:

    SHOW TABLE STATUS FROM `database`;
    

    或者对于特定的表:

    SHOW TABLE STATUS FROM `database` LIKE 'tablename';
    

    您将获得的其中一列是引擎。

    【讨论】:

    • +1,除非您始终有权查看您有权查看的对象的信息架构。
    • @Konerak 啊,真的 - 我会纠正答案。顺便说一句,我看到了一些 错误,在人们拥有正确权限的情况下,从 information_schema 中进行选择不起作用。
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2011-04-10
    • 2011-11-21
    • 2019-01-14
    • 2014-02-26
    • 2012-10-02
    相关资源
    最近更新 更多