欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL存储引擎选择

程序员文章站 2022-04-19 12:41:52
MySQL存储引擎有很多,本文只围绕工作中常用的MySQL存储引擎InnoDB、MyISAM、Memory以及一个比较新的存储引擎TokuDB进行说明。1. MyISAM描述: MySQL5.1以前的默认存储引擎优点:读取速度快支持全文索引缺点:使用表锁保证数据一致性,带来很多性能问题,高并发性能差不支持事务不支持外键崩溃后无法安全恢复适用场景:对于只读的数据,或者表比较小、可以忍受崩溃所带来的修复操作,可以使用此存储引擎。2. Memory描述: 将数据存放在内存中...

MySQL存储引擎有很多,本文只围绕工作中常用的MySQL存储引擎InnoDB、MyISAM、Memory以及一个比较新的存储引擎TokuDB进行说明。

1. MyISAM

描述: MySQL5.1以前的默认存储引擎

优点:

  • 读取速度快
  • 支持全文索引

缺点:

  • 使用表锁保证数据一致性,带来很多性能问题,高并发性能差
  • 不支持事务
  • 不支持外键
  • 崩溃后无法安全恢复

适用场景:

  • 对于只读的数据,或者表比较小、可以忍受崩溃所带来的修复操作,可以使用此存储引擎。

2. Memory

描述: 将数据存放在内存中的存储引擎

优点:

  • 读取速度快
  • 默认使用Hash索引

缺点:

  • 不支持事务
  • 表锁,并发写入性能差
  • 不支持BLOB或TEXT类型的列
  • 可能导致空间浪费,每行长度固定所以即使使用了VARCHAR也会存储为CHAR
  • 重启后数据丢失

使用场景:

  • MySQL在执行查询过程中用Memory存储引擎保存临时表,当然了,如果中间结果太大超出了Memory表的限制,或者含有BLOB或TEXT字段,则临时表会转换为MyISAM表。
  • 用于缓存周期性聚合数据
  • 用于保存数据分析过程中的中间数据

3. InnoDB

描述: 当前MySQL的默认引擎

优点:

  • 使用行锁保证数据一致性,支持高并发写入
  • 支持事务
  • 支持外键

缺点:

  • 不支持全文索引
  • 在数据量大于200w时性能急剧下降

适用场景:

  • 适用于大部分场景,当前线上项目多使用InnoDB存储引擎。如果数据量太大,就要考虑数据切分或将部分数据做归档了。

4. TokuDB

缺点:

  • 需要额外安装
  • 只支持Linux系统

优点:

  • 在事务机制下TokuDB的写入速度是InnoDB的9-20倍
  • 数据压缩比是InnoDB的14倍

适用场景:

  • 适用于写多读少的场景
  • 可以用作数据归档

5. 总结

  • MyISAM引擎因为其高并发写入速度慢,不支持事务,崩溃后难以维护,因此不推荐使用MyISAM存储引擎了。除非某些特殊需求(比如全文索引)。
  • InnoDB存储引擎适用于绝大部分场景,这也是当前MySQL的默认存储引擎。
  • Memory存储引擎将数据存储在内存中,读取速度快,但其高并发写入速度并无优势。使用的最多的场景是在做查询时MySQL优先用此存储引擎存储中间表,此部分无需人为干预。
  • TokuDB是一个比较新的存储引擎,同样支持事务,写入速度快,数据压缩比高,需要大量写入数据时可以用此存储引擎,可用于存储归档不常访问的数据。

本文地址:https://blog.csdn.net/qq_14945437/article/details/107150357