事务
- 原子性
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
- 比如转账:
A有100,B有30,A要转30给B,要么转账成功B有60,A70,要么转账失败A,B账户不变动.并不会A账户没了30,B账户还没收到,30不会飞走.
- 一致性
保证事务前后的数据完整性保持一致
A和B加起来共有130,转账完成后他们加起来的金额也是130,并不会多或少
- 隔离性
一个事务的执行不能被其他事务干扰. - 持久性
事务一旦提交则不可逆,它对数据库中数据的改变就是永久性的.
隔离所产生的一些问题:
- 脏读:
指一个事务读取了另一个事务未提交的数据
- 不可重复读:
指在一个事务内读取表中的某一行数据,多次读取结果不同
页面统计查询:
A | 100 |
---|---|
B | 200 |
C | 500 |
点击生成报表的时候,B有人转账进来300(事务已经提交)
A | 100 |
---|---|
B | 500 |
C | 500 |
- 虚读(幻读):
一个事务读取到了别的事务插入的数据,导致前后读取不一致
(一般是行影响,多了一行)
A | 100 |
---|---|
B | 500 |
C | 500 |
A | 100 |
---|---|
B | 500 |
C | 500 |
D | 500 |
本文地址:https://blog.csdn.net/qq_45404563/article/details/112580303