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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
23天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
2天前
|
存储 SQL 关系型数据库
MySQL 事务
MySQL 事务
|
3天前
|
负载均衡 关系型数据库 MySQL
MySQL-Proxy实现MySQL读写分离提高并发负载
MySQL-Proxy实现MySQL读写分离提高并发负载
|
16天前
|
存储 SQL 关系型数据库
【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-02
【4月更文挑战第7天】数据库通过视图实现事务隔离,不同隔离级别如读未提交、读已提交、可重复读和串行化采用不同策略。以可重复读为例,MySQL使用多版本并发控制(MVCC),每个事务有其独立的视图。回滚日志在无更早视图时被删除。长事务可能导致大量存储占用,应避免。事务启动可显式用`begin`或设置`autocommit=0`,但后者可能意外开启长事务。建议使用`autocommit=1`并显式管理事务,若需减少交互,可使用`commit work and chain`。
30 5
|
28天前
|
缓存 算法 关系型数据库
MySQL是如何进行并发控制的?
MySQL 采用了多种并发控制机制来管理并发访问,确保数据的一致性和正确性。以下是一些常见的并发控制方法: 1. **锁机制**:MySQL 使用锁来控制对数据的并发访问。常见的锁类型包括共享锁(Shared Lock)和排他锁(Exclusive Lock)。共享锁用于读取数据,允许多个事务同时读取,但阻止其他事务进行写操作。排他锁用于写入数据,会阻塞其他事务的读写操作。 2. **隔离级别**:MySQL 支持不同的隔离级别,如读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)等。隔离级别决定了并发事务之间的可见性和冲突
|
28天前
|
关系型数据库 MySQL 测试技术
面试-MySQL的四种事务隔离级别
面试-MySQL的四种事务隔离级别
18 0
|
3天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
7天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
29 4