一文理解Mysql,MVCC

Mysql数据库引擎该如何选择?

一文理解Mysql,MVCC


Mysql作为一款关系型数据库,其中优势之一,便是支持存储引擎可插拔 。你可以结合具体的使用场景,来选择特定的存储引擎 。比如你可以选择InnoDB或者MyISAM存储引擎 。同时由于Mysql是一款开源数据库,你也可以根据Mysql自定义的预留存储引擎接口,自己开发实现新的存储引擎 。Mysql中,不同的存储引擎,都有各自的特点 。
Mysql数据库存储包括:InnoDB存储引擎、MyISAM存储引擎、NDB存储引擎、Memory存储引擎、Archive存储引擎等 。01如果需要支持在线事务处理场景,请选择InnoDB存储引擎InnoDB存储引擎最大的特点,便是支持事务,行锁的设计,同时支持外键和MVCC 。数据库中的事务表示一段最小可执行SQL逻辑 。
【一文理解Mysql,MVCC】事务可以包含多个SQL语句,也可以是一个SQL语句组成 。事务执行中,要么全部执行成功,要么全部执行失败 。事务的四个特性:原子性(事务是最小执行单位)、一致性(数据状态总是从一个一致性状态到另外一个一致性状态)、隔离性(事务之间是隔离的)、持久性 。数据库事务经常会用在金融领域的场景,比如转账等 。所以,如果你的业务场景需要支持事务特性,那么你在使用Mysql时,需要选择InnoDB存储引擎来支持 。
InnoDB存储引擎目前在很多公司也用的比较广泛,比如Facebook、阿里等 。02如果需要支持联机分析场景,请选择MyISAM存储引擎MyISAM存储引擎不支持事务,它的最大的一个特点便是支持OLAP(联机分析场景) 。公司业务方经常会有这样的需求,需要对数据进行聚合操作,比如对数据进行SUM(求和)、COUNT(计数)等指标类计算,对这部分数据分析,进一步分析数据的价值,为公司上层提供决策支持 。
此时Mysql数据库可以选择MyISAM存储引擎来支持 。03如果可以将数据临时放到内存,希望访问数据速度快,可以选择Memory存储引擎 。如果需要对数据进行归档,请选择Archive存储引擎Memory存储引擎会将数据存储到内存中,对于内存数据的访问,其速度很快 。当然有一个问题,如果我们的数据库发生故障或者奔溃重启时,内存中的数据会全部消失 。
所以对于Memory存储引擎,它适用的场景用于存储临时数据的临时表以及数据维表到内存中,也可以使用Memory存储引擎来存储SQL查询中的临时结果表 。对于Archive存储引擎,它非常适用于存储归档的数据,比如存储日志信息,这部分数据没有那么重要,对其进行压缩进一步降低磁盘的存储空间 。我是Lake,专注大数据技术原理、人工智能、数据库技术、程序员经验分享,如果我的问答对你有帮助的话,希望你能点赞关注我,感谢 。

    推荐阅读