数据库事务隔离级别

事务是数据库的执行单位。事务具有ACID属性。原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

- 原子性:即事务中的一组操作,要么全执行,要么全部不执行
- 一致性:事务前数据是一致,事务后数据也是保持一致的
- 隔离性:多个并发事务执行时,要和事务串行执行的结果是一样的
- 持久性:数据库数据是持久化的,在数据库关闭或故障是可以恢复的


### 数据库隔离级别:

- 读未提交(read uncommitted):
写事务阻止其他写事务,不阻止其他读事务。会造成*脏读*:在一个写事务未提交之前读数据,读到的是脏数据。解决:read committed
- 读已提交(read committed):
写事务阻止其他读写事务,读事务不阻止其他事务。会造成*不可重复读*:在一个写事务之前读一次数据,和在写事务提交之后再次读取的值不一致。解决:repeatable read
- 可重复读(repeatable read):
读事务阻止其他写事务。会造成*幻读*:因为读事务只能阻止update和delete操作,不能阻止insert操作。所以会导致在insert前后读取不一致的数据量。解决:Serializable
- 串行化(Serializable):事务一个一个执行。

目前大部分的数据库默认隔离级别是:read committed,MySQL的默认隔离级别就是Repeatable read。
用户可以根据应用的具体事务性来确定不同的隔离级别。
选择不同的隔离级别要在事务安全和数据库读写性能之间平衡。考虑应用的实际情况,选择适当的事务级别。

转载于:https://www.cnblogs.com/WeaRang/p/6112452.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值