数据库——MySQL存储引擎

258 阅读2分钟

存储引擎

MySQL中的数据使用不同的技术存储在文件(或内存)中,这些不同的技术以及配套的相关功能在MySQL中被称为存储引擎(也称作表类型)。

  • show engines; 查看MySQL支持的引擎
功能InnoDBMyISAMMemory
存储限制64TB256TB RAM
支持事务yesnonono
支持全文索引noyesno
支持树索引yesyesyes
支持哈希索引nonoyes
支持数据缓存yesnoN/A
支持外键yesnono

InnoDB

MySQL5.5之后默认存储引擎。

  • 存储方式

  • 优点:提供了具有提交、回滚、崩溃恢复能力的事务安全、支持外键。

  • 缺点:相比MyISAM,写处理效率差一点,并且占用更多空间存储数据和索引。

MyISAM

  • 优势:访问速度快

EMEORY

  • 存放在内存中,默认哈希索引,访问速度快
  • 数据库服务一但关闭,数据丢失,对表大小限制
  • 使用场景:内容变化不频繁的代码表,作为统计操作的中间结果表,便于高效分析中间结果。

MERGE

选择存储引擎原则

  • 如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。
  • 如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
  • 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎作为临时表,存放查询的中间结果。
  • 如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用 Archive 引擎。