如何选择存储引擎

前面介绍了比较常用的存储引擎,以及他们所使用的场景,比如我们没有介绍到的存储引擎,也是一种事务型的,

比较有发展潜力的存储引擎,还有很多,MYSQL使用的存储引擎种类非常多,从这么多存储引擎中,怎样来选择存储引擎呢,

可以说大部分情况下呢,选择Innodb存储引擎呢,都是正确的,除非你要用到innodb引擎所不具备的特性,并且没有其他方法

替代的时候呢,我们就应该选择其他的存储引擎,否则都应该使用innodb存储引擎,来对我们的应用进行数据存储,如果我们非要

从众多存储引擎中进行筛选,而不想选用innodb存储引擎的话,可以参考以下几个因素,首先我们要考虑我们的应用是否需要事务的

支持,如果应用需要事务支持,innodb是目前最稳定,并且经过验证的存储引擎,此外cocodb也是一种选择,只不过cocodb还不是很

完善,不太建议大家在生产环境进行使用,如果不需要事务,并且主要是做select和insert操作,那么myisam也是可以使用,进一步

来说,如果只有insert,连select都很少的话,那么也可以使用archive这种存储引擎,比如大部分的日志型的应用,符合这一特性,

另外要参考的条件就是备份,也会影响到堆存储引擎的选择,如何可以定期的根据服务器,进行备份的话,那么备份因素可以进行忽略,

但是在生产环境中,数据库服务器基本上是不能有这样的条件的,所以我们就必须要选择在线热备的引擎,而前面提到的存储引擎中呢,

Innodb有免费的在线热备方案,其他存储引擎呢,要么不能在线热备,要么就只能有收费的方案,在这里提一下大家常用的mysqldump呢,

并不能算是一种热备的方案,一方面mysqldump呢,使用的是逻辑备份,而另一方面呢,mysqldump为了保证数据的一致性呢,必须要对进行

备份的数据进行加锁,所以他不是一种在线热备方案,而奔溃恢复呢,也是我们在选择存储引擎时要考虑的一个问题,当数据量比较大的时候,

系统奔溃后,快速恢复是一个需要考虑的问题,相对而言,MYISAM损坏的概念要比innodb要高很多,而且恢复速度也要更慢,因此即使不需要

事务支持,很多时候我们也要选择innodb数据引擎,最后就要考虑存储引擎的特有特性了,有些应用依赖有些存储引擎所独有的特性,

比如有些应用依赖btree索引,来进行优化,那么就要选择innodb存储引擎,另外有些应用需要使用搜索,在这种MYSQL服务器下呢,

也就只能使用MYISAM存储引擎,当然如果你使用的是MYSQL5.7以后版本的话,那么你还是 要使用Innodb存储引擎,因为在MYSQL5.7

之后呢,innodb已经支持这种搜索,相关的函数应用了,在选择存储引擎这种问题下呢,还有一点要注意的是,除非万不得已,否则就不要混合

使用多种存储引擎,要不然呢会带来一些复杂的问题,以及一些潜在的bug,比如混合使用myisam存储引擎,innodb存储引擎,可以说这种

情况呢,还是非常常见的,但这种混合使用存储引擎呢,一旦在一个事务中两种存储引擎的表进行操作,如果这个事务进行了回滚,那么只有

innodb的表是可以进行回滚的,而myisam的表中的数据是不能回滚的,这样就会给应用带来逻辑上的问题,就算我们不考虑事务的因素,

混合使用两种存储引擎呢,无法实现完全的在线热备,这样就可能会对备份中呢MYISAM表就会带来大量的阻塞,同样数据库的性能就会

带来比较大的影响,我曾经就遇到过这种情况,所以建议大家,不要混合使用存储引擎

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值