Mysql事务隔离级别和MCVV(多版本并发控制)附图 ✨ 每日积累

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql事务隔离级别和MCVV(多版本并发控制)附图 ✨ 每日积累

于《高性能MYSQL》一书中可以到得知


事务隔离级别


1、READ UNCOMMITED(读未提交):在这个级别中,即使没有提交,对其他事物也是可见的,事务可以读取未提交的数据,这也称之为脏读。这个会造成很多问题,从性能来说,并不比其他的隔离级别好太多,但是缺乏其他隔离级而别的好处,除非整的有非常必要的,实际应用中很少见。


2、READ COMMITED(读已提交):大多数数据库系用默认得隔离级别是这个(mysql不是),一个事务在开始时,只能看到已经提交得事务所做的修改,意思是:一个事务从开始到commit提交之前,所做的任何修改都是对其他事务不可见,即前后两次读取到的结果不一样。


3、REPEATABLE READ(可重复读:MYSQL默认的事务隔离级别):这个隔离级别解决了脏读和在同一个事务中多次读取得结果不一致。但是可重复读无法解决幻读得问题,幻读指当前事务在读取某个范围内得记录时,另外的一个事务对该范围内插入了数据,当当前事务再次读取到记录时,发现记录比之前得行数要多也就是(幻行)。mysql得InnoDB和XtraDB存储引擎通过MVCC(多版本并发控制)解决了幻读的问题。


4、SERIALIZABLE(可串行化:MYSQL最高隔离级别):通过事务得强制串行化执行,避免了幻读得问题,这个隔离级别会对读取得每一行数据加锁,可能导致大量的超时和锁征用得问题。实际上很少用这个隔离级别,只有在非常需要确保数据一致性的情况且没有并发的情况下才考虑使用这种方式。


这四种隔离级别中只有可串行话是加锁读,其他都是无锁读。


MVCC

MVCC是多版本并发控制,,mysql大多数事务型存储引擎实现的都不是简单的行级锁,为了提升并发性能得考虑,实现了MVCC,不仅是mysql,oracle和postgreSQL也是先了MVCC,的但是各自实现得机制不一样,因为没有一个标准。
MVCC是行级锁得一个变种,在一些情况下避免了加锁操作,因此开销很低,各种数据库大都是实现了非阻塞大的读操作,写操作也只是锁定必要的行。
MVCC得实现,是通过保存数据在某个时间点的快照来实现得。也就是说,不管需要执行多长时间,每个事务看到的数据都是一致的。根据事务的开始时间不同,每个事务对同一张表,同一时刻看到的数据可能不一样得。
InnoDB得MVCC,是通过每行记录后面保存两个隐藏函数得列来实现大的。这两个列,一个化是保存了行得创建时间,一个是保存行得过期时间(或者删除时间)。存储的并不是实际的时间值,而是一个系统的版本号。每开始一个新的事务,系统版本号会自动递增。

1.png

参考样图

在MySQL中建表时,每个表都会有三列隐藏字段,其中和MVCC有关系的有两个字段:数据行的系统版本号 (DB_TRX_ID)和删除版本标识(DB_ROLL_PT)

1.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
164
分享
相关文章
MySQL底层概述—9.ACID与事务
本文介绍了数据库事务的ACID特性(原子性、一致性、隔离性、持久性),以及事务控制的演进过程,包括排队、排它锁、读写锁和MVCC(多版本并发控制)。文章详细解释了每个特性的含义及其在MySQL中的实现方式,并探讨了事务隔离级别的类型及其实现机制。重点内容包括:ACID特性(原子性、持久性、隔离性和一致性的定义及其实现方式)、事务控制演进(从简单的全局排队到复杂的MVCC,逐步提升并发性能)、MVCC机制(通过undo log多版本链和Read View实现高效并发控制)、事务隔离级别(析了四种隔离级别(读未提交、读已提交、可重复读、可串行化)的特点及适用场景)、隔离级别与锁的关系。
vb6读取mysql,用odbc mysql 5.3版本驱动
通过以上步骤,您可以在VB6中使用ODBC MySQL 5.3驱动连接MySQL数据库并读取数据。配置ODBC数据源、编写VB6代码
77 32
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
133 7
MySQL事务日志-Undo Log工作原理分析
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
1281 2
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
MySQL版本升级(8.0.31->8.0.37)
本次升级将MySQL从8.0.31升级到8.0.37,采用就地升级方式。具体步骤包括:停止MySQL服务、备份数据目录、下载并解压新版本的RPM包,使用`yum update`命令更新已安装的MySQL组件,最后启动MySQL服务并验证版本。整个过程需确保所有相关RPM包一同升级,避免部分包遗漏导致的问题。官方文档提供了详细指导,确保升级顺利进行。
437 16
MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了
本文详细介绍了数据库事务的四大特性(AICD原则),包括原子性、隔离性、一致性和持久性,并深入探讨了事务并发问题与隔离级别。同时,文章还讲解了分布式系统中的CAP理论及其不可能三角关系,以及BASE原则在分布式系统设计中的应用。通过具体案例和图解,帮助读者理解事务处理的核心概念和最佳实践,为应对相关技术面试提供了全面的知识准备。
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
126 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)