阿里云国际版
帮助文档
注册阿里云
网站首页
最新活动
阿里云邮箱
等保测评
阿里云产品
企业上云最佳实践
技术帮助文档
关于我们
付费资讯
侧边菜单
阿里云服务器ECS
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新
[咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本
[咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案
[咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中
[咨询更多]
阿里云折扣优惠
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣
[咨询更多]
网站首页
»
关于我们
»
公司新闻
微信扫码 阿里云返佣 咨询
微信扫码 阿里云折扣 咨询
微信扫码 技术支持
电话:18580233332
QQ客服:32738651
电话:
18623333330
QQ客服:
2194888888
电话:18581111185
QQ客服:3388866681
MySQL多版本并发控制
2020-9-14 点击量:
MySQL多版本并发控制,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则会对所有读取的行都加锁。
上一篇: 以太网ARP请求/应答报文详解
下一篇: 减少网页中的HTTP请求
最热文章
更多
自动化部署的好处及它的优势特点有哪些
阿里云合作伙伴订单关联项目操作和规则
雪花服务器是什么
什么是镜像?常见的镜像文件格式
Bucket 是对象存储非常重要的概念
阿里云合作伙伴佣金政策和返点流程
推荐文章
更多
2022年双十一阿里云代理商返佣多少
阿里云渠道代理商返点流程
阿里云代理商最高返点多少,阿里云代理商返...
云代理商返点,阿里云代理商优惠购买流程
按量付费转包年包月时下单失败如何处理?包...
预留实例券可以同时抵扣多台实例吗
获取更多阿里云折扣 立即咨询
最新活动
更多
双十一无影云桌面价格:无影4C...
2022双十一阿里云服务器优惠...
2022阿里云双11活动开启:...
11月阿里云金秋云创季:云数据...
2022年阿里云双11金秋云创...
云服务器百亿补贴,云服务器低至...
相关关键字
更多
阿里云国际版
阿里云国际站优惠
阿里云国际站代理
安恒密盾
阿里云关联合作伙伴
小程序服务器
阿里云无影云电脑
阿里云代理商价格
重庆阿里云代理商
西安阿里云代理
云南阿里云代理
杭州阿里云代理商
成都阿里云代理商
阿里云三级等保
阿里云国际站代理商
阿里云新用户
阿里云微服务引擎
阿里云能耗宝
VMware服务
阿里云服务器收费
技术帮助文档
更多
阿里云云盾服务如何安装?云盾安装步骤
阿里云服务器远程登录不了怎么办
DDoS原生防护的工作原理、应用场景...
阿里云轻量应用服务器开放端口教程
高防服务器能防御哪些攻击
如何开通消息服务MNS
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠
立即领取
抢折上折
优惠券领取
免费配置推荐
服务器一年49.68元
云数据库19.9元
云安全5折
短信0.033元/条
更多折扣
阿里云代理返佣
阿里云代理合作
微信扫码咨询
咨询热线
18580233332