MySQL学习笔记-事务的隔离性

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL学习笔记-事务的隔离性

最经典的事务相关的例子就是转账,小明向小红转 100 元,小明账户减 100,小红账户加 100,对于这一组操作,必须要保证要么都成功,要么都失败,而 MySQL 的事务具有 ACID 特性,其中隔离性是最难理解的,这篇文章主要来熟悉一下 MySQL 的隔离性,熟悉隔离性可以帮助后面学习多版本并发控制(MVCC)原理。

1.笔记图

2.事务

  • 就是要保证一组数据库操作,要么全部成功,要么全部失败
  • ACIDAtomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)

3.隔离级别

  • 串行化(serializable ):对于同一行记录,会加写锁会加读锁
  • 可重复读(repeatable read):一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的,未提交变更对其他事务是不可见的
  • 读提交(read committed):一个事务提交之后,它做的变更才会被其他事务看到
  • 读未提交(read uncommitted):一个事务还没提交时,它做的变更就能被别的事务看到

  • 若隔离级别是读未提交V1 的值是 2V2V3 的值都是 2
  • 若隔离级别是读提交V1 的值是 1V2V3 的值都是 2
  • 若隔离级别是可重复读V1V2 的值都是 1V3 的值是 2
  • 若隔离级别是 串行化,事务 B 执行将 1 改成 2 的时候,会被锁住,直到事务 A 提交后,事务 B 才可以继续执行,V1V2 的值是 1V3 的值是 2
  • 查看当前隔离级别
show variables like 'transaction_isolation';

4.什么时候会创建视图

  • 可重复读隔离级别下,视图是在事务启动时创建的,整个事务存在期间都用这个视图
  • 读提交隔离级别下,这个视图是在每个 SQL 语句开始执行的时候创建的
  • 读未提交隔离级别下直接返回记录上的最新值,没有视图概念
  • 串行化隔离级别下直接用加锁的方式来避免并行访问

5.事务隔离的实现

  • 每条记录在更新的时候都会同时记录一条回滚操作
  • 记录上的最新值,通过回滚操作,都可以得到前一个状态的值

  • 当前值是 4,不同时刻启动的事务会有不同的 read-view
  • 在视图 A、B、C 里面,这一个记录的值分别是 1、2、4,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)
  • 当没有事务再需要用到这些回滚日志时,回滚日志会被删除

6.事务的启动方式

  • 显式启动事务语句beginstart transaction,配套的提交语句是 commit,回滚语句是 rollback
  • set autocommit=0:该命令会将这个线程的自动提交关掉,如果你只执行一个 select 语句,这个事务就启动了,而且并不会自动提交
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 缓存 关系型数据库
MySQL底层概述—9.ACID与事务
本文介绍了数据库事务的ACID特性(原子性、一致性、隔离性、持久性),以及事务控制的演进过程,包括排队、排它锁、读写锁和MVCC(多版本并发控制)。文章详细解释了每个特性的含义及其在MySQL中的实现方式,并探讨了事务隔离级别的类型及其实现机制。重点内容包括:ACID特性(原子性、持久性、隔离性和一致性的定义及其实现方式)、事务控制演进(从简单的全局排队到复杂的MVCC,逐步提升并发性能)、MVCC机制(通过undo log多版本链和Read View实现高效并发控制)、事务隔离级别(析了四种隔离级别(读未提交、读已提交、可重复读、可串行化)的特点及适用场景)、隔离级别与锁的关系。
|
4月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
198 6
|
24天前
|
存储 关系型数据库 MySQL
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
MySQL事务日志-Undo Log工作原理分析
|
2月前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
2月前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了
本文详细介绍了数据库事务的四大特性(AICD原则),包括原子性、隔离性、一致性和持久性,并深入探讨了事务并发问题与隔离级别。同时,文章还讲解了分布式系统中的CAP理论及其不可能三角关系,以及BASE原则在分布式系统设计中的应用。通过具体案例和图解,帮助读者理解事务处理的核心概念和最佳实践,为应对相关技术面试提供了全面的知识准备。
|
4月前
|
存储 SQL 关系型数据库
MySQL的事务隔离级别
【10月更文挑战第17天】MySQL的事务隔离级别
157 43
|
3月前
|
关系型数据库 MySQL
mysql事务特性
原子性:一个事务内的操作统一成功或失败 一致性:事务前后的数据总量不变 隔离性:事务与事务之间相互不影响 持久性:事务一旦提交发生的改变不可逆
|
4月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
128 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
3月前
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。