MySQL各存储引擎区别与特点

在这里插入图片描述NDB存储引擎
介绍
2003年,MYSQL AB公司从Sony Ericsson 公司收购了NDB集群引擎
结构
类似于Oracle的RAC集群不过与Oracle RAC share everything 架构不同的是
其结构是share nothing 的集群架构,提供更高的可用性。
特点
数据全部放在内存(从MYSQL5.1版本开始,可以将非索引数据放在磁盘上)
主键查找的速度极快
通过添加NDB数据存储节点可以线性地提高数据性能,是高可用、高性能的集群系统
备注说明
关于NDB存储引擎,有一个问题值得注意,那就是NDB存储引擎的连接操作(JOIN)是在MySQL数据库层完成的,而不是在存储引擎层完成的。
这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢。如果解决了这个问题,NDB存储引擎的市场应该是非常巨大的。

Maria存储引擎
介绍
Maria存储引擎是新开发的引擎,设计目标主要是用来取代原有的MyISAM存储引擎,从而成为MySQL的默认存储引擎。Maria 存储引擎的开发者是MySQL的创始人之一的MichaelWidenius。因此,它可以看做是MyISAM的后续版本。
结构
特点
支持缓存数据和索引文件,
应用了行锁设计
子主提供了MVCC功能
支持事务和非事务安全的选项
以及更好的BLOB字符类型的处理性能
备注

Federated存储引擎
介绍
Federated存储引擎
结构
指向远程MYSQL数据库服务器上的表
特点
非常类似于SQL server 的链接服务器和Oracle的透明网关
备注
只支持MySQL数据表,不支持异构数据表

Memory存储引擎
介绍
Memory存储引擎(之前称HEAP存储引擎)
结构
将表中的数据存放在内存
特点
如果数据库重启或发生崩溃,表中数据都将消失
非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表
默认使用哈希索引
存储引擎速度非常快
只支持表锁,并发性能较差
不支持TEXT和BLOB列类型
存储变长字段时按照定长字段方式进行,浪费内存
备注说明
MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集(intermediate result)。 如果中间结果集大于Memory存储引擎表的容量设置,又或者中间结果含有TEXT或BLOB列类型字段,则MySQL数据库会把其转换到MyISAM存储引擎表而存放到磁盘中。之前提到MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失。

Archive存储引擎
介绍
Archive存储引擎
结构
使用zlib算法将数据行进行压缩后存储
压缩比一般可达1:10
特点
非常适合存储归档数据,如日志信息
只支持INSERT和SECECT操作
从MYSQL5.1开始支持索引
备注
Archive存储引擎使用行锁实现高并发的插入操作,但是其自身并不是事务安全存储引擎,其设计目标是提供高速的插入和压缩功能。

MyISAM存储引擎
介绍
主要面向一些OLAP数据库应用,在MySQL5.58版本之前MyISAM存储引擎是默认的存储引擎(除window版本外)
结构
引擎表由MYD和MYI组成
MYD用来存储数据文件
MYI用来存储索引文件
特点
不支持事务
表锁设计
支持全文索引
缓存池只缓存索引文件,而不缓存数据文件
备注说明
可以通过使用myisampack工具来进- - 步压缩数据文件,因为myisampack工具使用赫夫曼(Huffman) 编码静态算法来压缩数据,因此使用myisampack工具压缩后的表是只读的,当然用户也可以通过myisampack来解压数据文件。
在MySQL 5.0版本之前,MyISAM默认支持的表大小为4GB,如果需要支持大于4GB的MyISAM表时,则需要制定MAX_ROWS和AVG__ROW_LENGTH属性。从MySQL 5.0版本开始,MyISAM默认支持256TB的单表数据,这足够满足- -般应用需求。

InnoDB存储引擎
介绍
从MySQL数据库5.5.8版本开始,InnoDB 存储引擎是默认的存储引擎。
结构
将数据放在一-个逻辑的表空间中
这个表空间就像黑盒–样由InnoDB存储引擎自身进行管理
从MySQL4.1 (包括4.1)版本开始,它可以将每个InnoDB存储引擎的表单独存放到一个独立的ibd文件中
此外,InnoDB 存储引擎支持用裸设备(row disk)用来建立其表空间。
特点
支持事务,其设计目标主要面向在线事务处理(OLTP)的应用
应用了行锁设计
支持外键
并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁
以及更好的BLOB字符类型的处理性能
通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别
使用一种被称为next-keylocking的策略来避免幻读( phantom)现象的产生
InnoDB 储存引擎还提;供了插人缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hashindex)、预读(read ahead)等高性能和高可用的功能。
备注
对于表中数据的存储,InnoDB 存储引擎采用了聚集(clustered) 的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB 存储引擎会为每-行生成-一个 6字节的ROWID,并以此作为主键。

发布了2 篇原创文章 · 获赞 4 · 访问量 40

猜你喜欢

转载自blog.csdn.net/weixin_40238374/article/details/105322478
今日推荐