数据库组成存储引擎
3.2 MySQL存储引擎
存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制、索引的存放方式和锁粒度等不同。本节就对MySQL中常用的存储引擎进行简单的介绍。
3.2.1 查看MySQL中的存储引擎
可以在MySQL命令行中输入如下命令,查看当前MySQL支持的存储引擎。
mysql> SHOW ENGINES \G
*************************** 1. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 8. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
9 rows in set (0.00 sec)
结果显示,当前MySQL中总共有9种存储引擎,除了FEDERATED存储引擎外,还支持8种存储引擎。
注意:笔者使用的MySQL版本为8.0.18。
3.2.2 常用存储引擎介绍
MySQL中常用的存储引擎有InnoDB、MyISAM、MEMORY、ARCHIVE和CSV,本节对这些存储引擎进行简单的介绍。
1.InnoDB存储引擎
InnoDB存储引擎的特点如下:
·支持事务。
·锁级别为行锁,比MyISAM存储引擎支持更高的并发。
·能够通过二进制日志恢复数据。
·支持外键操作。
·在索引存储上,索引和数据存储在同一个文件中,默认按照B+Tree组织索引的结构。同时,主键索引的叶子节点存储完整的数据记录,非主键索引的叶子节点存储主键的值。
·在MySQL 5.6版本之后,默认使用InnoDB存储引擎。
·在MySQL 5.6版本之后,InnoDB存储引擎支持全文索引。
2.MyISAM存储引擎
MyISAM存储引擎的特点如下:
·不支持事务。
·锁级别为表锁,在要求高并发的场景下不太适用。
·如果数据文件损坏,难以恢复数据。
·不支持外键。
·在索引存储上,索引文件与数据文件分离。
·支持全文索引。
3.MEMORY存储引擎
MEMORY存储引擎的特点如下:
·不支持TEXT和BLOB数据类型,只支持固定长度的字符串类型。例如,在MEMORY存储引擎中,会将VARCHAR类型自动转化成CHAR类型。
·锁级别为表锁,在高并发场景下会成为瓶颈。
·通常会被作为临时表使用,存储查询数据时产生中间结果。
·数据存储在内存中,重启服务器后数据会丢失。如果是需要持久化的数据,不适合存储在MEMORY存储引擎的数据表中。
4.ARCHIVE存储引擎
ARCHIVE存储引擎的特点如下:
·支持数据压缩,在存储数据前会对数据进行压缩处理,适合存储归档的数据。
·只支持数据的插入和查询,插入数据后,不能对数据进行更改和删除,而只能查询。
·只支持在整数自增类型的字段上添加索引。
5.CSV存储引擎
CSV存储引擎的特点如下:
·主要存储的是.csv格式的文本数据,可以直接打开存储的文件进行编辑。
·可以将MySQL中某个数据表中的数据直接导出为.csv文件,也可以将.csv文件导入数据表中。
注意:笔者只是列举了MySQL中常用的一些存储引擎,有关其他存储引擎的知识,读者可以参考MySQL官方文档进行了解与学习,网址如下:
https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html
https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html
- 点赞
- 收藏
- 关注作者
评论(0)