MySQL常用存储引擎对比

存储引擎概述

存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。

MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎。

 

存储引擎对比

特点MyISAMInnoDBMEMORYMERGENDB
存储限制256TB64TBRAM-
事务安全-支持---
锁机制表锁行锁表锁表锁行锁
B树索引支持支持支持支持支持
哈希索引--支持-支持
全文索引支持----
集群索引-支持---
数据缓存-支持支持-支持
索引缓存支持支持支持支持支持
数据可压缩支持----
空间可用N/A
内存使用
批量插入速度
支持外键-支持---

MyISAM存储引擎

  • 数据存储方式简单,使用 B+Tree 进行索引
  • 使用三个文件定义一个表:.MYI .MYD .frm
  • 少碎片、支持大文件、能够进行索引压缩
  • 二进制层次的文件可以移植
  • 访问速度飞快,是所有MySQL文件引擎中速度最快的
  • Table level lock,性能稍差,更适合读取多的操作
  • 表数据容量有限,一般建议单表数据量介于 50w-200w
  • 增删查改以后要使用 myisamchk 检查优化表
  • 支持三种不同的存储结构:静态型、动态型、压缩型

InnoDB存储引擎

  • 使用 Table Space 的方式来进行数据存储 (ibdata1, ib_logfile0)
  • 支持事务、外键约束等数据库特性
  • Rows level lock, 读写性能都非常优秀
  • 能够承载大数据量的存储和访问
  • 拥有自己独立的缓冲池,能够缓存数据和索引
  • 在关闭自动提交的情况下,与MyISAM引擎速度差异不大(甚至更快)

MEMORY存储引擎

  • 每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度
  • 可以在一个表中有非唯一键值
  • 使用一个固定的记录长度格式
  • 不支持BLOB或TEXT列
  • 支持AUTO_INCREMENT列和对可包含NULL值的列的索引
  • 在所由客户端之间共享(就像其他任何非TEMPORARY表)

MERGE存储引擎

  • 是一组MyISAM表的组合,这些MyISAM表必须结构完全相同
  • 表本身并没有数据,对表的操作实际上是对内部的MyISAM表进行
  • 使用两个文件:.frm 存储表定义、.MRG 包含组合表的信息

 

存储引擎选择

  • MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常适合的。MyISAM是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
  • InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多更新、删除操作,那么InnoDB存储引擎应该是比较合适的选择。InnoDB存储引擎除了有效低降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB都是合适的选择。
  • MEMORY:将所有数据保存在RAM中,在需要快速定位记录和其他类似数据的环境下,可提供极快的访问。MEMORY的缺陷是对表的大小有限制,太大的表无法缓存在内存中,其次是要确保表的数据可以恢复 ,数据库异常终止后表中的数据是可以恢复的。MEMORY表通常用于更新不太频繁的小表,用以快速得到访问结果。
  • MERGE:用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它们。MERGE表的优点在于可以突破对单个MyISAM表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效地改善MERGE表的访问效率。这对于诸如数据仓储等VLDB环境十分适合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值