【从零开始的mysql】MySQL的存储引擎对比

MySQL的存储引擎对比

        mysql的每个存储引擎都是有其各自的特点,根据具体的应用建立不同的存储引擎表,由于mysql是开源的我们可以通过修改源码来进行二次开发。

注意:存储引擎是基于表的,不是数据库

InnoDB存储引擎

1.支持事务,主要面向事务处理(OLTP)的应用
2.支持外键
3.支持行级锁,三种行锁算法(Record Lock,Gap Lock,Next-Key Lock)
4.通过多版本并发控制(MVCC)支持高并发性,4种隔离级别(未提交读,已提交读,可重复读[默认],可序列化)
5.表单独存放到独立的.ibd文件中,表中的数据存储采用聚集(clusterde)方式,每张表都是按主键顺序进行存放,如果没有在表定 义时声明主键,将会为其生成一个6字节ROWID作为主键。

MyISAM存储引擎

1.不支持事务,不支持外键,主要面向一些OLAP数据库应用
2.表锁设计
3.支持全文索引
4.表由MYD和MYI文件组成,MYD存放数据文件,MYI存放索引文件
通常用于只读或大部分读取工作,如报表等

NDB存储引擎

NDB存储引擎是一个集群存储引擎,其结构为share nothing集群架构,数据全部存放在内存中(mysql5.1后支可将非索引数据放在磁盘上),因此主键查找速度极快,并且通过添加NDB数据存储节点(Data Node)可以线性的提高数据库性能。特别适用于需要高可用的应用程序
NDB存储引擎的连接(join)操作是在mysql数据库层完成的,而不是在存储引擎层完成,所以复杂的连接操作需要巨大的网络开销,查询速度会很慢。

Memory存储引擎

Memory存储引擎将表中的数据存放在内存中,如果重启数据会消失,适合存储临时数据的临时表,默认索引使用hash索引。
Memory存储引擎虽然速度非常快,但是支持表锁,并发性能差,存储变长字段varchar时是按照定长字段char来进行的,因此会浪费内存。
如果使用Memory存储引擎作为临时表存放数据时,当数据集大于Memory存储引擎表的容量设置,或结果集中包含text或blob类型字段,mysql会把其转换为MyISAM存储引擎

Archive存储引擎

Archive存储引擎只支持insert和select操作,5.1之后支持索引,使用zlib算法将数据行压缩存储,适合存储归档数据,如日志。
使用行锁实现高并发插入操作,但本身不支持事务,主要提供高速插入和压缩功能

Maria存储引擎

Maria存储引擎是新开发的一个引擎,设计目标是为了取代MyISAM的,可以看作MyISAM的后续版本,与MyISAM不同的是,支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务的选项,和更好的blob字符类型的处理性能

各存储引擎比较

特点InnoDBMyISAMMemoryArchiveNDB
存储限制64TB256TBRAM没有
事务安全支持----
锁机制行锁表锁表锁行锁行锁
B树索引支持支持支持-支持
哈希索引--支持-支持
全文索引-支持---
集群索引支持----
T树索引----支持
数据缓存支持-支持-支持
索引缓存支持支持支持-支持
数据可压缩-支持-支持-
空间使用N/A非常低
内存使用
批量插入速度非常高
支持外键支持----
MVCC支持----
备份/时间点恢复支持支持支持支持支持

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值