MySQL存储引擎的选择

459 阅读2分钟

这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战

猫和老鼠.jpg

前言:   本篇文章 是我关于MySQL的第16篇文章,水平一般、能力有限。文章写的比较浅,适合新手来看。本篇文章采用MySQL8.0来举例。本篇文章来介绍一下MySQL存储引擎的选择。

一. 常规情况下

MySQL在5.1之后将InnoDB设为了默认的存储引擎,在5.6支持了全文索引功能。在一般情况下,我们都将InnoDB存储引擎作为首选。除非我们有InnoDB无法实现需求。

当然,如果我们不需要InnoDB的特性和额外功能,并发等能力。我们可以选择MyISAM存储引擎,这样可以省更多的空间。

注意: 混用存储的引擎的收益比风险低的多。所以不要将存储引擎进行混用。

二. 考虑因素

1. 事务

事务是我们在有写入操作时的首先要考虑的因素,这对选择存储引擎是最关键的。在对事务的支持上,InnoDB和XtraDB支持的比较好并且稳定。

2. 崩溃恢复

之前的文章我们提到过,MyISAM是不支持崩溃恢复的,这也是被替换掉的一个主要原因,在线上环境数据库崩溃时需要在很短的时间内进行恢复,并且可靠性要强。在考虑这种条件的时候,InnoDB是不错的选择。

3. 热备

在线上环境时,为了数据的安全性需要定时来备份数据库。这个时候,支持热备份的存储引擎就是比较好的选择。

三. 日志型存储

在针对只需要插入和少量查询,并且对插入速度,存储空间有较高要求的日志型需求时。这个时候InnoDB虽然是可以的,但是选择MyISAM或者其他日志型存储引擎肯定是更好的选择。

但是查询多时,也会影响插入的速度。这个时候可以进行读写分离的操作,写库负责写数据,异步同步到读库中,读库只负责查询。

或者进行日期分表的操作,这样也可以分离读写。

参考文档

《高性能MySQL》