当前位置:网站首页>MySQL事务简介、事务隔离级别
MySQL事务简介、事务隔离级别
2022-06-12 16:49:00 【早起之王】
目录
什么是事务
事务是多条指令的集合。一个事务里面的指令,要么都完成,要么都不完成。
比如转账的操作,需要支付方账户扣钱,接收方账户加钱。如果只有扣钱成功,加钱失败,那肯定是不可以的。这两项操作要么都完成,要么都不完成。
事务的性质(ACID)
1. 原子性:事务是最小执行单位,不能被拆分。
2. 一致性:执行事务前后,数据保持一致。就像转账之后,两人的账户资金总额不变。
3. 隔离性:并发访问数据库时,不同事务之间不互相干扰。
4. 持久性:事务提交对数据库中数据做出的改变是持久的,数据库故障也不会改变。
并发访问数据库会产生的问题
- 脏读:读到了其他事务修改但是没有提交的数据。
- 不可重复读:读多次,后面读到的数据和之前不同。在一般情况下,一个事务内,看到的同一条数据应当是 一致的。
- 丢失修改:事务A对数据进行修改,事务B拿着原数据也修改,那么先提交的事务,就会被后提交的覆盖掉。
- 幻读:事务读取一组数据,再次读取这组数据的时候,发现多了几行或者少了几行。
脏读和不可重复读的区别:脏读只读一次,且读到的数据是被修改了的没有提交的数据。
事务隔离级别
SQL标准中定义了 4 个事务隔离级别:
读未提交(READ-UNCOMMITTED): 能够读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
读取已提交(READ-COMMITTED): 可以读取到其他事务已经提交的数据,可以防止脏读。
可重复读(REPEATABLE-READ): 其他事务的修改对本事务内的读取不产生影响,可以防止脏读和不可重复读。
可串行化(SERIALIZABLE): 最高的隔离级别,所有的事务串行执行,防止脏读、不可重复读以及幻读。
示例
读未提交产生的脏读:

读已提交产生的不可重复读:

隔离级别可重复读:解决了不可重复读的问题

边栏推荐
猜你喜欢

程序员爆料:4年3次跳槽,薪资翻了3倍!网友:拳头硬了......

有趣的 LD_PRELOAD

MongoDB 学习整理(用户,数据库,集合,文档 的基础命令学习)

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

Leetcode 2190. 数组中紧跟 key 之后出现最频繁的数字(可以,一次过)

canvas 高级功能(下)

redis. clients. jedis. exceptions. JedisConnectionException: Could not get a resource from the pool

Extract the new Chinese cross modal benchmark zero from 5billion pictures and texts, and Qihoo 360's new pre training framework surpasses many SOTAS

Unit sshd.service could not be found

Leetcode 2194. Excel 錶中某個範圍內的單元格(可以,已解决)
随机推荐
\begin{algorithm} 笔记
CVPR 2022 | meta learning performance in image regression task
PAT甲级 1139 第一次接触
The C programming language (version 2) notes / 8 UNIX system interface / 8.7 instance (storage allocator)
\Begin{algorithm} notes
Project training of Shandong University rendering engine system (VI)
MongoDB 学习整理(用户,数据库,集合,文档 的基础命令学习)
有趣的 LD_PRELOAD
Picture online collection and delivery system source code
Is the securities account opened by qiniu safe? Is it legal?
(四)Golang运算符
两位新晋Committer的“升级攻略”
Qcustomplot notes (I): qcustomplot adding data and curves
Leetcode 2190. 数组中紧跟 key 之后出现最频繁的数字(可以,一次过)
Dynamic loading and execution of programs
Cloud development kunkun chicken music box wechat applet source code
Which colleges are particularly easy to enter?
程序的动态加载和执行
CAS乐观锁
JVM memory model and local memory