MySQL 如何在MySQL中显示所有带有储存引擎的表格?
在MySQL中,表格的储存引擎是非常重要的,因为它会对表格的性能、可靠性和功能产生重大影响。MySQL提供了多种储存引擎,比如InnoDB、MyISAM等等。但是,我们有时需要查询一下库中使用哪些储存引擎的表格,本文就会详细介绍如何在MySQL中查找所有带有储存引擎的表格。
阅读更多:MySQL 教程
方法一:使用SHOW TABLE STATUS语句
我们可以使用MySQL内置的SHOW TABLE STATUS语句来查看所有表格的状态信息以及对应的储存引擎。SHOW TABLE STATUS语句是一个用来列出目前存在于数据库中的表格的详细状态信息的命令,可以输出类似下面的结果:
mysql> SHOW TABLE STATUS;
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+---------+
| 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 | Collation | Checksum | Create_options | Comment |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+---------+
| t1 | MyISAM | 10 | Dynamic | 0 | 4096 | 0 | 281474976710655 | 1024 | 0 | NULL | 2017-05-10 22:41:09 | 2017-05-10 22:41:12 | NULL | utf8_general_ci| NULL | ||
| t2 | InnoDB | 10 | Compact | 100 | 4096 | 368640 | 281474976710655 | | 0 | NULL | 2017-05-10 22:43:15 | 2017-05-10 22:43:18 | NULL | utf8_general_ci| NULL | ||
| t3 | InnoDB | 10 | Compact | 0 | 4096 | 0 | 281474976710655 | | 0 | NULL | 2017-05-10 23:43:55 | 2017-05-10 23:43:57 | NULL | utf8_general_ci| NULL | ||
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+---------+
如上面所示,该命令列出了所有的表格的状态信息,包括表名、储存引擎、记录数、数据长度、索引长度、自增长值等等。
方法二:使用information_schema.tables表
除了使用SHOW TABLE STATUS语句之外,我们还可以通过查询information_schema.tables表来获取所有带有储存引擎的表格。该表提供了一个对所有表格的信息的只读视图,可以输出下面类似的结果:
mysql> SELECT table_name, engine FROM information_schema.tables WHERE table_schema = 'mydb';
+------------+--------+
| table_name | engine |
+------------+--------+
| t1 | MyISAM |
| t2 | InnoDB |
| t3 | InnoDB |
+------------+--------+
该查询语句可以按照数据库中的表名和储存引擎来输出结果。同时,你可以通过添加其他查询条件来进行更多筛选。
方法三:查询SHOW ENGINES语句的输出结果
最后,我们还可以通过查询SHOW ENGINES语句来获取MySQL支持的所有的储存引擎及其状态信息。SHOW ENGINES将会输出所有的储存引擎,包括默认的储存引擎、是否支持事务、是否支持XA事务等等。其中,列名Support显示为YES的储存引擎即为MySQL支持的储存引擎。例如:
mysql> SHOW ENGINES;
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
可以看到,该语句输出所有MySQL支持的储存引擎,包括默认的InnoDB、MyISAM、MEMORY、CSV、ARCHIVE等等。我们可以根据其中的Support列来判断某个储存引擎是否被MySQL支持。
结论
通过以上三种方法,我们可以很容易地查找出所有带有储存引擎的表格,以及MySQL支持的所有储存引擎。这对于我们日常的数据库管理和优化都是非常有用的。在选择储存引擎的时候,我们需要考虑自己的实际需求,比如需要支持事务、多版本并发控制、高并发读写等等,来选择最适合自己的储存引擎。