MySQL常用存储引擎比较

Posted 神即道,道法自然,如来。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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提供的接口。每个引擎都有自己的服务。这些存储引擎用不用的方式管理数据文件,提供不同的特性,但是为上层提供的接口规范却是相同的。所以存储引擎就支持随意切换。

 

 

 

 

以上是关于MySQL常用存储引擎比较的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库MyISAM和InnoDB存储引擎的比较

转MySQL数据库MyISAM和InnoDB存储引擎的比较

深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

面试官:你了解MySQL的哪些存储引擎?请介绍一下?

面试官:你了解MySQL的哪些存储引擎?请介绍一下?

MySQL存储引擎MyISAM与InnoDB的优劣