MySQL常用存储引擎比较

一:MyISAM

应用范围比较小。表级别的锁限制了读/写的性能,因此适用于在web和数据仓库配置中。它通常用于只读或者以写为主的工作。

特点:

  1. 支持表级别的锁(插入和更新会锁表),不支持事务。
  2. 拥有较高的插入(insert)和查询(select)速度。
  3. 存储了行数(count速度更快,怎么向数据库中快速插入100万条数据?我们可以先用MyISAM插入数据,然后修改存储引擎为InnoDB的操作)。
  4. 只适合于只读之类的数据分析项目(委贷系统的从库,供大数据抽数和跑批统计)

二:InnoDB

InnoDB两个数据文件,MySQL5.7中默认的存储引擎。InnoDB是一个事务安全(与ACID兼容)的MySQL存储引擎,它具有提交、回滚和崩溃恢复功能保护用户数据。InnoDB支持行级别锁(不升级为粗粒度的锁)和Oracle风格一致非锁读提高了用户并发性能。InnoDB将用户数据存储在聚集索引中,以减少基于主键的常见查询I/O。为了保持数据完整性,InnoDB还支持外键引用完整性约束。

特点:

  1. 支持事务,支持外键,因此数据库的完整性、一致性更高。
  2. 支持行级别的锁和表级别的锁。
  3. 支持读写并发,写不阻塞读(MVCC)
  4. 特殊的索引存放方式,可以减少IO,提示查询效率。
  5. 适合经常更新的表、存在并发读写或者有事务处理的业务系统。

三:Memory

一个文件,将所有数据存储在RAM中,以便在需要快速查找非关键数据的环境中快速访问。这个引擎以前被称为堆引擎。其实用案例正在减少。InnoDB的缓冲池内存区域提供了一种通用、持久的方法将大部分数据保存在内内存中。

特点:

  1. 把数据放在内存里面,读写速度很快,但是数据库重启或者崩溃数据会全部消失,只适合做临时表。

 

如何选择存储引擎?

  1. 如果对数据一致性要求比较高,需要事务支持,可以选择InnoDB。
  2. 如果查询数据多更新少,对查询性能要求高,可以选择MyISAM。
  3. 如果需要一个用于查询的临时表,可以选择Memory
  4. 如果所有的存储引擎都不能满足你的需求,并且你技术能力足够,可以根据官方内部手册用C余元开发一个存储引擎。也就是说,为什么MySQL能支持这么多存储引擎,还能自定义存储引擎,表的存储引擎改了对Server访问没有任何影响,就是大家写存储引擎的时候遵循了MySQL规范,实现了MySQL提供的接口。每个引擎都有自己的服务。这些存储引擎用不用的方式管理数据文件,提供不同的特性,但是为上层提供的接口规范却是相同的。所以存储引擎就支持随意切换。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值