0%

MySQL存储引擎

Server version: 8.0.20 Source distribution

SHOW ENGINES

EngineSupportCommentTransactionsXASavepoints
FEDERATEDNOFederated MySQL storage engineNULLNULL*
NULL*
MEMORYYESHash based, stored in memory, useful for temporary…NONONO
InnoDBDEFAULTSupports transactions, row-level locking, and fore…YESYESYES
PERFORMANCE_SCHEMAYESPerformance SchemaNONONO
MyISAMYESMyISAM storage engineNONONO
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
BLACKHOLEYES/dev/null storage engine (anything you write to it…NONONO
CSVYESCSV storage engineNONONO
ARCHIVEYESArchive storage engineNONONO

MySQL中常用的存储引擎有InnoDB、MyISAM、MEMORY、ARCHIVE和CSV

存储引擎

InnoDB存储引擎

支持事务 锁级别为行锁,比MyISAM存储引擎支持更高的并发 能够通过二进制日志恢复数据 支持外键操作
在索引存储上,索引和数据存储在同一个文件中,默认按照B+Tree组织索引的结构。同时,主键索引的叶子节点存储完整的数据记录,非主键索引的叶子节点存储主键的值。

在MySQL 5.6版本之后,默认使用InnoDB存储引擎。

在MySQL 5.6版本之后,InnoDB存储引擎支持全文索引。

MyISAM存储引擎

不支持事务。

锁级别为表锁,在要求高并发的场景下不太适用。

如果数据文件损坏,难以恢复数据。

不支持外键。

在索引存储上,索引文件与数据文件分离。

支持全文索引。

MEMORY存储引擎

不支持TEXT和BLOB数据类型,只支持固定长度的字符串类型。例如,在MEMORY存储引擎中,会将VARCHAR类型自动转化成CHAR类型。

锁级别为表锁,在高并发场景下会成为瓶颈。

通常会被作为临时表使用,存储查询数据时产生中间结果。

数据存储在内存中,重启服务器后数据会丢失。如果是需要持久化的数据,不适合存储在MEMORY存储引擎的数据表中。

ARCHIVE存储引擎

支持数据压缩,在存储数据前会对数据进行压缩处理,适合存储归档的数据。

只支持数据的插入和查询,插入数据后,不能对数据进行更改和删除,而只能查询。

只支持在整数自增类型的字段上添加索引。

CSV存储引擎

主要存储的是csv格式的文本数据,可以直接打开存储的文件进行编辑。

可以将MySQL中某个数据表中的数据直接导出为csv文件,也可以将.csv文件导入数据表中。

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