1. MySQL 存储引擎概述
MySQL 的存储引擎是插件式的,用户可以根据实际的应用场景,选择最佳的存储引擎。MySQL默认支持多种存储引擎,以适应不同的应用需求。
MySQL 5.7 支持的存储引擎有:InnoDB、MyISAM、MEMORY、CSV、MERGE、FEDERATED 等。从 5.5.5 版本开始,InnoDB 成为 MySQL 的默认存储引擎,也是当前最常用的存储引擎,5.5.5 版本之前,默认引擎为 MyISAM。创建新表时,如果不指定存储引擎,MySQL 会使用默认存储引擎。
使用以下命令,查看数据库当前的默认引擎:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
使用以下命令,查看数据库当前所支持的存储引擎:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
每一行的含义大致如下:
- Engine:存储引擎名称;
- Support:不同值的含义为:
- DEFAULT:表示支持并启用,为默认引擎;
- YES:表示支持并启用;
- NO:表示不支持;
- DISABLED:表示支持,但是被数据库禁用。
- Comment:存储引擎注释;
- Transactions:是否支持事务;
- XA:是否支持XA分布式事务;
- Savepoints:是否支持保存点。
创建表时,ENGINE 关键字表示表的存储引擎。如下例子中,表 a 的存储引擎为 InnoDB,表 b 的存储引擎为 MyISAM。
- 1
- 2
- 3
- 4
- 5
也可以使用 show table status
命令查看表的相关信息。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
每一行的含义大致如下:
- Name:表名;
- Engine:表的存储引擎类型;
- Version:版本号;
- Row_format:行的格式
- Rows:表中的行数;
- Avg_row_length:平均每行包含的字节数;
- Data_length:表数据的大小(单位字节);
- Max_data_length:表数据的最大容量;
- Index_length:索引的大小(单位字节);
- Data_free:已分配但目前没有使用的空间,可以理解为碎片空间(单位字节);
- Auto_increment:下一个 Auto_increment 值;
- Create_time:表的创建时间;
- Update_time:表数据的最后修改时间;
- Check_time:使用check table命令,最后一次检查表的时间;
- Collation:表的默认字符集和字符列排序规则;
- Checksum:如果启用,保存的是整个表的实时校验和;
- Create_options:创建表时指定的其他选项;
- Comment:表的一些额外信息。
2. 小结
本小节介绍了 MySQL 存储引擎的基本概念,以及一些相关命令,如查看当前默认引擎、查看数据库当前所支持的存储引擎、查看表的相关信息等。