当前位置:网站首页>MySQL事务简介、事务隔离级别
MySQL事务简介、事务隔离级别
2022-06-12 16:49:00 【早起之王】
目录
什么是事务
事务是多条指令的集合。一个事务里面的指令,要么都完成,要么都不完成。
比如转账的操作,需要支付方账户扣钱,接收方账户加钱。如果只有扣钱成功,加钱失败,那肯定是不可以的。这两项操作要么都完成,要么都不完成。
事务的性质(ACID)
1. 原子性:事务是最小执行单位,不能被拆分。
2. 一致性:执行事务前后,数据保持一致。就像转账之后,两人的账户资金总额不变。
3. 隔离性:并发访问数据库时,不同事务之间不互相干扰。
4. 持久性:事务提交对数据库中数据做出的改变是持久的,数据库故障也不会改变。
并发访问数据库会产生的问题
- 脏读:读到了其他事务修改但是没有提交的数据。
- 不可重复读:读多次,后面读到的数据和之前不同。在一般情况下,一个事务内,看到的同一条数据应当是 一致的。
- 丢失修改:事务A对数据进行修改,事务B拿着原数据也修改,那么先提交的事务,就会被后提交的覆盖掉。
- 幻读:事务读取一组数据,再次读取这组数据的时候,发现多了几行或者少了几行。
脏读和不可重复读的区别:脏读只读一次,且读到的数据是被修改了的没有提交的数据。
事务隔离级别
SQL标准中定义了 4 个事务隔离级别:
读未提交(READ-UNCOMMITTED): 能够读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
读取已提交(READ-COMMITTED): 可以读取到其他事务已经提交的数据,可以防止脏读。
可重复读(REPEATABLE-READ): 其他事务的修改对本事务内的读取不产生影响,可以防止脏读和不可重复读。
可串行化(SERIALIZABLE): 最高的隔离级别,所有的事务串行执行,防止脏读、不可重复读以及幻读。
示例
读未提交产生的脏读:
读已提交产生的不可重复读:
隔离级别可重复读:解决了不可重复读的问题
边栏推荐
- (五)输出和输出
- pytorch和torchvision官方文档使用方法
- Swin Transformer代码讲解
- The C programming language (version 2) notes / 8 UNIX system interface / 8.1 file descriptor
- C # final review programming question (guessed by the teacher)
- Concurrent trichromatic marking
- canvas 处理图像(上)
- 有趣的 LD_PRELOAD
- 叶子分享站PHP源码下载
- Which colleges are particularly easy to enter?
猜你喜欢
两位新晋Committer的“升级攻略”
ISCC-2022 部分wp
MySQL interview arrangement
IDEA在控制台显示出services,统一管理所有的jetty服务,
idea如何设置导包不带*号
Schrodinger's Japanese learning applet source code
薛定谔的日语学习小程序源码
The safety of link 01 was questioned, and "ultra high strength" became "high strength"_ Publicity_ Steel_ problem
云开发坤坤鸡乐盒微信小程序源码
Doctor application | National University of Singapore, Xinchao Wang, teacher recruitment, doctor / postdoctoral candidate in the direction of graph neural network
随机推荐
Pat class a 1142 largest regiment
IDEA在控制台显示出services,统一管理所有的jetty服务,
The safety of link 01 was questioned, and "ultra high strength" became "high strength"_ Publicity_ Steel_ problem
About component value transfer
Is the securities account opened by qiniu safe? Is it legal?
Google browser debugging skills
[raspberry pie]: (IV) camera advanced
\Begin{algorithm} notes
Leetcode 2194. Cells within a range in Excel table (yes, solved)
Exception assertion of assertj
(五)输出和输出
Leetcode 2194. Excel 表中某个范围内的单元格(可以,已解决)
1723. 完成所有工作的最短时间
token与幂等性问题
QCustomplot笔记(一)之QCustomplot添加数据以及曲线
数据库的三大范式
CVPR 2022 | meta learning performance in image regression task
How to do a good job of testing in the company (do a good job of testing)
启牛开的证券账户安全吗?合法吗?
Unit sshd.service could not be found