阿里云国际版
帮助文档
注册阿里云
网站首页
最新活动
阿里云邮箱
等保测评
阿里云产品
企业上云最佳实践
技术帮助文档
关于我们
付费资讯
阿里云服务器ECS
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新
[咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本
[咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案
[咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中
[咨询更多]
阿里云折扣优惠
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣
[咨询更多]
网站首页
»
企业上云最佳实践
»
数据库丨数据分析
微信扫码 省钱折扣 咨询
微信扫码 优惠券 咨询
微信扫码 技术支持
电话:18580233332
QQ客服:32738651
电话:18580211110
QQ客服:32752563
电话:18623333330
QQ客服:2194888888
MySQL的多版本并发控制
2020-9-21 点击量:
多版本并发控制。MySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle、PostgreSQL等其他
数据库
系统也都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的实现标准。
可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行。
MVCC的实现,是通过保存数据在某个时间点的快照来实现的。也就是说,不管需要执行多长时间,每个事务看到的数据都是一致的。根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。如果之前没有这方面的概念,这句话听起来就有点迷惑。熟悉了以后会发现,这句话其实还是很容易理解的。
前面说到不同存储引擎的MVCC实现是不同的,典型的有乐观(optimistic)并发控制和悲观(pessimistic)并发控制。下面我们通过InnoDB的简化版行为来说明MVCC是如何工作的。
InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。当然存储的并不是实际的时间值,而是系统版本号(system version number)。每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。下面看一下在REPEATABLE READ隔离级别下,MVCC具体是如何操作的。
SELECT
InnoDB会根据以下两个条件检查每行记录:
1.InnoDB只查找版本早于当前事务版本的数据行(也就是,行的系统版本号小于或等于事务的系统版本号),这样可以确保事务读取的行,要么是在事务开始前已经存在的,要么是事务自身插入或者修改过的。
2.行的删除版本要么未定义,要么大于当前事务版本号。这可以确保事务读取到的行,在事务开始之前未被删除。
只有符合上述两个条件的记录,才能返回作为查询结果。
INSERT
InnoDB为新插入的每一行保存当前系统版本号作为行版本号。
DELETE
InnoDB为删除的每一行保存当前系统版本号作为行删除标识。
UPDATE
InnoDB为插入一行新记录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为行删除标识。
保存这两个额外系统版本号,使大多数读操作都可以不用加锁。这样设计使得读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行。不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。
MVCC只在REPEATABLE READ和READ COMMITTED两个隔离级别下工作。其他两个隔离级别都和MVCC不兼容,因为READ UNCOMMITTED总是读取最新的数据行,而不是符合当前事务版本的数据行。而SERIALIZABLE则会对所有读取的行都加锁。
上一篇: Mysql数据分片技术之初识表分区
下一篇: 阿里云PolarDB MySQL云原生数据库的术语表和使用限制
最热文章
更多
阿里云RDS数据库恢复实例方案
SQL语言
阿里云PolarDB MySQL云原生数...
MySQL事务
Mysql数据分片技术之初识表分区
数据独立性与二级映像
推荐文章
更多
MySQL的多版本并发控制
Redis中的跳跃表是如何实现
MySQL逻辑架构
模式与实例、数据模型、数据模型的三要素
DAS阿里云数据库旗下产品
什么是数据库
获取更多阿里云折扣 立即咨询
最新活动
更多
阿里邮箱折扣优惠,低至5折起
云服务器老用户续费、升级低至6...
阿里云服务器续费转新购优惠价格...
阿里云gn6v、gn6i、gn...
云桌面低至1元起,最高得600...
阿里云限时折扣:云服务器老用户...
相关关键字
更多
服务器租用
大带宽服务器
阿里云服务器等保
阿里邮箱价格
阿里云返佣
阿里云代理商折扣
无影云电脑租用
无影云电脑
企业邮箱代理商
企业邮箱代理
服务器代理商
阿里云代理返点
阿里云合作伙伴
阿里云企业网盘
阿里企业邮箱
阿里邮箱
ddos高防ip
服务器性能
ddos防护能力
开启ddos防护
技术帮助文档
更多
成都云服务器价格是多少
租一台云服务器多少钱
哪个云服务器性价比高
cdn一般怎么收费
云服务器怎么便宜买
租用云服务器需要考虑哪些因素
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠
立即领取
微信扫码咨询
咨询热线
18580233332