代码之家  ›  专栏  ›  技术社区  ›  oneself

如何检查特定表的MySQL引擎类型?

  •  345
  • oneself  · 技术社区  · 16 年前

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

    13 回复  |  直到 11 年前
        1
  •  564
  •   Greg    16 年前

    SHOW TABLE STATUS WHERE Name = 'xxx'

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

        2
  •  273
  •   aalaap    8 年前

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

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

    代替 dbname

        3
  •  52
  •   Pacerier    8 年前
    SHOW CREATE TABLE <tablename>;
    

    较难解析但可读性更强 SHOW TABLE STATUS .

        4
  •  47
  •   MArk Guadalupe    15 年前

    或者只是

    show table status;

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

        5
  •  20
  •   Alexis Wilke    6 年前

    对Jocker的回答有点小改动(我会发表评论,但我还没有足够的因果报应):

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

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

        6
  •  10
  •   Nicholas    12 年前
    SHOW CREATE TABLE <tablename>\G
    

    SHOW CREATE TABLE <tablename>;
    

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

        7
  •  8
  •   sjas Pushkar Phule    9 年前
    mysqlshow -i <database_name>
    

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

    mysqlshow -i <database_name> <table_name> 
    

    将仅针对特定表执行此操作。

        8
  •  7
  •   Zahid    6 年前

    从数据库_名称显示表状态;

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

    sample output of mysql db

    显示表格状态,其中名称=所需的表格名称;

        9
  •  5
  •   T30    4 年前

    如果你正在使用 MySQL Workbench alter table .

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

        10
  •  2
  •   David Thomas    10 年前

    SHOW TABLE STATUS LIKE 'table';
    

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

    SHOW TABLE STATUS LIKE 'field_data_%';
    
        11
  •  2
  •   sjas Pushkar Phule    9 年前

    如果您是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 
    
    .
    .
    .
    
        12
  •  0
  •   harsha vardhan    11 年前

    转到信息模式数据库,您将找到“tables”表,然后选择它;

    Mysql>使用信息模式; Mysql>从表格中选择表格名称、引擎;

        13
  •  0
  •   mytuny    6 年前

    我只是想在里面找到它 数据库建表 Operations 选项卡>&燃气轮机; Table options &燃气轮机&燃气轮机; Storage Engine .

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

        14
  •  0
  •   Suraj Rao Raas Masood    3 年前

    除了前面的条目中显示的示例外,您还可以通过标准查询从信息_schema db中获得这些信息,如下所示:

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