# 常见的存储引擎

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/15603.html | 发布：2023-01-11 | 更新：2023-01-11 | 分类：建站教程、投稿分享

1 InnoDB存储引擎  
InnoDB存储引擎支持事务，是面向在线事务处理方面的应用，支持行锁、外键，支持类似Oracle的非锁定读，默认情况读取操作不会产生锁，在MySQL5.1版本之后被设定成默认存储引擎，此前是MyISAM

 

InnoDB存储引擎将数据放在一个逻辑表空间，由InnoDB自身进行管理，将每个InnoDB存储的表单独放在一个独立的ibd文件中，同样也可以使用裸设备(row disk)建立表空间

 

InnoDB使用多版本并发控制(MVCC)获得高并发性，实现了SQL标准的4种隔离级别，默认使用的是REPEATABLE READ(可重复读)级别，此外还提供了插入缓冲、预读、二次写、自适应哈希索引、预读等高性能和高可用的功能

 

针对表数据的存储，InnoDB存储引擎采用了聚集(clustered)的方式，每张表的存储按照主键的顺序存放，如果没有显式地指定主键，InnoDB将为每一行生成一个6字节的ROWID作为主键

 

1 InnoDB存储引擎  
InnoDB存储引擎支持事务，是面向在线事务处理方面的应用，支持行锁、外键，支持类似Oracle的非锁定读，默认情况读取操作不会产生锁，在MySQL5.1版本之后被设定成默认存储引擎，此前是MyISAM

 

InnoDB存储引擎将数据放在一个逻辑表空间，由InnoDB自身进行管理，将每个InnoDB存储的表单独放在一个独立的ibd文件中，同样也可以使用裸设备(row disk)建立表空间

 

InnoDB使用多版本并发控制(MVCC)获得高并发性，实现了SQL标准的4种隔离级别，默认使用的是REPEATABLE READ(可重复读)级别，此外还提供了插入缓冲、预读、二次写、自适应哈希索引、预读等高性能和高可用的功能

 

针对表数据的存储，InnoDB存储引擎采用了聚集(clustered)的方式，每张表的存储按照主键的顺序存放，如果没有显式地指定主键，InnoDB将为每一行生成一个6字节的ROWID作为主键

 

3 NDB存储引擎  
NDB是一种集群存储引擎，类似Oracle的RAC share everything结构，但不同的是其使用share nothing的集群结构，因此能提高更高级别的高可用性。

 

NDB的特点是数据放置在内存中(5.1版本后可将非索引数据放在磁盘中)，主键查找的速度极快，并可以通过添加NDB数据存储节点(Data Node)线性的提高存储性能，可以作为高可用、高性能的集群系统

 

注：NDB存储引擎的连接操作是在MySQL数据库层完成的，而不是在存储引擎层，意味着需要较大的网络开销，因此查询速度较慢

 

4 Memory存储引擎  
Memory将数据存放在内存中，如果数据库重启或崩溃，所有数据将丢失，适合用于存储临时数据的临时表以及数据仓库中的维度表，默认使用哈希索引

 

该引擎存在一些限制，比如只支持行锁，并发性能差，不支持TEXT和BLOB列类型，还有存储变长字段是是按照定长方式进行的，存在内存浪费的问题。若存放结果集时，中间结果集的大小大于Memory存储引擎表的容量设置，或存在TEXT或BLOB字段，MySQL会将其转化为MyISAM存储引擎放在磁盘，因MyISAM不缓存数据文件，因此产生的临时表的性能会有损失

 

5 Archive存储引擎  
Archive存储引擎只支持insert和select操作，从MySQL5.1之后支持索引，使用zlib算法压缩数据行后存储，压缩率可达到1:10，适用于存储归档数据，并使用行锁实现高并发的写入操作

 

6 Federated存储引擎  
Federated存储引擎不存放数据，用于指向一台远程MySQL数据库服务器的表，类似SQL Server的链接服务器与Oracle的透明网关，不同的是Federated存储引擎只支持MySQL数据表，不支持异构数据表

 

7 Maria存储引擎  
Maria存储引擎是新开发的引擎，目标是取代原有的MyISAM存储引擎，成为MySQL的默认存储引擎，特点是缓存数据，索引数据，行锁设计，提供MVCC功能，支持事务和非事务安全的选项支持，以及更好的BLOB字符类型的处理性能

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
