MySQL中的事务问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL中的事务问题

事务的引出


比如我们手机转账的时候, 甲手机里的钱要转到乙手机里, 那么我们就要对甲的钱包实行扣钱操作,然后对乙手机钱包进行加钱操作, 假如操作执行一半,数据崩溃了,导致甲扣了钱,乙没加钱,那这就很尴尬了.(ps: 这种事情以前其实挺常见的)

事务就是为了解决上述问题.


什么是事务


事务的本质就是把多个 sql 语句打包成一个整体, 要么全部执行,要么一个都不执行, 不会出现执行一半这种中间状态.


回滚


其实上面的一个都不执行并不是真的一个语句都不执行, 而是看起来和没执行一样, 这里是因为它把数据恢复了. 这个恢复数据的操作 我们就叫它回滚.

进行回滚的时候,如何知道数据的初始状态呢?

数据库里有个专门记录事务的日志, 也正因如此, 使用事务的时候, 执行 sql 的开销是更大的, 效率更低.


事务的四个关键特性


1. 原子性


过去人们认为原子是事物能够分割的最小单位, 所以原子性就代表事务不可分割的特性.


2. 一致性


即事务执行前后, 数据得是靠谱的.

假如甲给乙转20块钱, 结果甲扣20, 乙收到2000块, 这不是无中生有吗,数据不能离谱, 得靠谱.


3. 持久性


事务修改的内容是写到硬盘上的, 持久存在的, 重启也不会丢失.


4. 隔离性


隔离性是为了解决’‘并发’‘执行事务, 引起的问题.(服务器同时处理多个客户端的请求, 就称为’‘并发’')

如果并发的这些事务是修改不同的表 / 不同的数据, 那没事.

但如果是修改同一个表 / 同一个数据, 那就可能带来一定的问题.

比如多个客户端一起尝试对同一个账户进行转帐, 此时可能就会把这个数据给搞乱了.

事务的隔离性就是为了在数据库并发处理问题的时候, 不会出问题.

下面来说说并发处理事务会有哪些问题, 以及处理方法.


并发执行事务可能出现的问题


1. 脏读问题


一个事务A正在对数据进行修改的过程中, 还没提交之前, 另一个事务B, 也对同一个数据进行读取, 此时B的读操作就称为"脏读", 读到地数据也称为"脏数据"(也就是无效数据).

为什么说是无效数据呢? 因为事务A还没对数据修改完成, B就读了, 所以B读到的数据不一定是事务A修改后并提交的数据.

为了解决脏读问题, mysql中引用了"写操作加锁"这样的机制

“写操作加锁” 其实就是事务A对数据进行操作的时候, B不能对该数据进行读操作, 直到A对数据操作完提交后, 才可操作.


给写操作加锁降低了并发程度(降低了效率), 提高了隔离性(提高了数据的准确性).


2. 不可重复读


事务1 已经提交了数据, 此时事务2 开始读取数据, 在读取过程中, 事务3 又提交了新的数据, 此时意味着同一个事务2 内, 多次读数据, 读出来的数据是不一样的(预期是多次读取结果一样), 这就叫做"不可重复读"(第二次读取结果不能复现第一次的结果).

mysql中通过对读加锁, 来保证在事务2 读取数据的时候, 不会再有新的数据更新(即当事务2 处理完后才能进行事务3)


通过对读加锁, 又进一步降低了事务的并发处理能力(处理效率也降低了), 提高了事务的隔离性(数据的准确性又得到提高)


3. 幻读


在读加锁和写加锁的前提下, 一个事务两次读取同一个数据, 发现读取的数据值一样, 但结果集不一样(Student.java 代码内容不变, 但第一次看到的是只有Student.java 这个文件, 第二次看到的却是Student.java 和 Teacher.java), 这种情况就称为"幻读".


数据库使用"串行化"来解决幻读, 彻底放弃并发处理事务, 一个接一个的串行处理事务.(这样做是并发程度最低的(效率最低), 隔离性是最高的(准确性也是最高的)).


对应上述问题, mysql提供了四种隔离级别:


read uncommitted 没有任何限制, 并行最高(效率最高), 隔离性最低(准确性最低)

read committed 给写加锁, 并发程度低, 隔离性提高了

repeatable read 给写和读都加锁, 并发程度又降低, 隔离性又提高了

serializable 串行化, 并发程度最低,隔离性最高


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
29天前
|
SQL 关系型数据库 MySQL
MySQL锁机制:并发控制与事务隔离
本文深入解析了MySQL的锁机制与事务隔离级别,涵盖锁类型、兼容性、死锁处理及性能优化策略,助你掌握高并发场景下的数据库并发控制核心技巧。
|
2月前
|
存储 监控 Oracle
MySQL事务
MySQL事务具有ACID特性,包括原子性、一致性、隔离性和持久性。其默认隔离级别为可重复读,通过MVCC和间隙锁解决幻读问题,确保事务间数据的一致性和并发性。
MySQL事务
|
3月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
15天前
|
关系型数据库 MySQL 数据库
MySql事务以及事务的四大特性
事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别。高隔离级别虽能更好处理并发问题,但会降低性能。
|
3月前
|
安全 关系型数据库 MySQL
mysql事务隔离级别
事务隔离级别用于解决脏读、不可重复读和幻读问题。不同级别在安全与性能间权衡,如SERIALIZABLE最安全但性能差,READ_UNCOMMITTED性能高但易导致数据不一致。了解各级别特性有助于合理选择以平衡并发性与数据一致性需求。
149 1
|
10月前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
4238 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
9月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
359 7
MySQL事务日志-Undo Log工作原理分析
|
12月前
|
存储 SQL 关系型数据库
MySQL的事务隔离级别
【10月更文挑战第17天】MySQL的事务隔离级别
268 43
|
12月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
2202 14
MySQL事务日志-Redo Log工作原理分析
|
10月前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了
本文详细介绍了数据库事务的四大特性(AICD原则),包括原子性、隔离性、一致性和持久性,并深入探讨了事务并发问题与隔离级别。同时,文章还讲解了分布式系统中的CAP理论及其不可能三角关系,以及BASE原则在分布式系统设计中的应用。通过具体案例和图解,帮助读者理解事务处理的核心概念和最佳实践,为应对相关技术面试提供了全面的知识准备。

热门文章

最新文章

推荐镜像

更多