【问题标题】:How can I check MySQL engine type for a specific table?如何检查特定表的 MySQL 引擎类型?
【发布时间】:2010-09-17 19:57:57
【问题描述】:

我的 MySQL 数据库包含多个使用不同存储引擎的表 (特别是 myisam 和 innodb)。我怎样才能找出哪些表是 使用哪个引擎?

【问题讨论】:

    标签: mysql innodb myisam


    【解决方案1】:

    SHOW TABLE STATUS WHERE Name = 'xxx'

    这会给你(除其他外)一个Engine 列,这就是你想要的。

    【讨论】:

    • 如果我的表损坏,它只是显示 Engine=NULL 并且有一个“评论”告诉我修复表。但是,在我知道如何修理桌子之前,我猜我需要了解引擎(老实说,我还没有走那么远。)因此,@Jocker 下面的评论对我更有帮助。
    • @Greg,我们应该使用这个还是 Jocker 的解决方案?
    • @Pacerier - 两者都可以正常工作。不同之处在于该解决方案提供了一个表的信息,而 Jocker 的解决方案显示了数据库中所有表的引擎类型(同时也更具可读性)。
    • @Greg,顺便说一句,为什么当我们执行 show full columns from t1 时引擎信息不显示?
    【解决方案2】:

    要显示数据库中所有表及其引擎的列表,请使用以下 SQL 查询:

    SELECT TABLE_NAME,
           ENGINE
    FROM   information_schema.TABLES
    WHERE  TABLE_SCHEMA = 'dbname';
    

    dbname 替换为您的数据库名称。

    【讨论】:

    • 这是一个很棒的 b/c 它过滤掉除了表名和引擎之外的所有内容。
    • 获取特定表的引擎,可以使用:SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
    • 这给了我一个 MySQL 5.6.37 上的空集。
    • 这是一个更好的答案,因为它是真正的 SQL,所以我可以执行 COUNT(*)GROUP BY 之类的操作。
    【解决方案3】:
    SHOW CREATE TABLE <tablename>;
    

    SHOW TABLE STATUS 更难解析但更易读。

    【讨论】:

      【解决方案4】:

      或者只是

      show table status;

      这将列出您数据库中的所有表。

      【讨论】:

      • @NikolaiSamteladze,您在选定的数据库中有表吗?
      • 最好最简单的方法!
      【解决方案5】:

      对 Jocker 的回应稍作调整(我会发表评论,但我还没有足够的业力):

      SELECT TABLE_NAME, ENGINE
        FROM information_schema.TABLES
       WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
      

      这会从列表中排除没有引擎的 MySQL 视图。

      【讨论】:

        【解决方案6】:
        SHOW CREATE TABLE <tablename>\G
        

        与输出相比,它的格式会更好

        SHOW CREATE TABLE <tablename>;
        

        \G 技巧对于许多其他查询/命令也很有用。

        【讨论】:

        • \G hack 只在cli mysql下
        • 很好的解决方案,谢谢
        【解决方案7】:
        mysqlshow -i <database_name>
        

        将显示特定数据库的所有表的信息。

        mysqlshow -i <database_name> <table_name> 
        

        将只针对特定表这样做。

        【讨论】:

          【解决方案8】:

          显示数据库名称中的表状态;

          它将列出上述数据库中的所有表。
          示例输出

          显示表状态,其中 name=your_desired_table_name;

          它将显示上述表格使用的存储引擎。

          【讨论】:

            【解决方案9】:

            如果您使用的是MySQL Workbench,请右键单击表格并选择alter table

            在该窗口中,您可以看到您的表引擎并对其进行更改。

            【讨论】:

              【解决方案10】:

              另一种方式,也许是获取单个或匹配的一组表状态的最短途径:

              SHOW TABLE STATUS LIKE 'table';
              

              然后您可以使用 LIKE 运算符,例如:

              SHOW TABLE STATUS LIKE 'field_data_%';
              

              【讨论】:

                【解决方案11】:

                如果你是 linux 用户:

                显示 mysql 服务器上所有数据库的所有表的引擎,没有表 information_schemamysqlperformance_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 
                
                .
                .
                .
                

                【讨论】:

                  【解决方案12】:

                  到 information_schema 数据库那里你会找到'tables'表然后选择它;

                  Mysql>使用information_schema; mysql> select table_name,engine from tables;

                  【讨论】:

                    【解决方案13】:

                    如果你是一个 GUI 人并且只想在 PhpMyAdmin 中找到它,那么选择你选择的表并转到 Operations 选项卡 >> @ 987654322@ >> Storage Engine。 您甚至可以使用下拉选项列表从那里更改它。

                    PS:本指南基于 PhpMyAdmin 4.8 版。不能保证旧版本的路径相同。

                    【讨论】:

                      【解决方案14】:

                      除了前面条目中显示的示例外,您还可以使用标准查询从 information_schema db 中获取,如下所示:

                      use information_schema;
                      
                      select NAME from INNODB_TABLES where NAME like "db_name%";
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-08-17
                        • 2013-04-23
                        • 1970-01-01
                        • 2010-12-19
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-12-26
                        相关资源
                        最近更新 更多