理解数据库事务隔离级别

1.未提交读
事务的修改尚未提交,其他事务可以读到
这种现象称之为脏读,会引起很多问题,如无必须不要使用
例子:
售票员A、B,余票3张,此时有人来A处购买3张车票,A查到余票3张,点击提交订单,此时另外一个人来B购买车票,此时B读到A刚卖出去3张票余票为0,所有B告诉乘客余票不足,但此时A的系统出了故障,之后的步骤失败,最终导致一张票也没卖出去。
2.提交读
大多数数据库的默认隔离级别,一个事务只能读到已提交事务的结果,正在执行的无法被看到,会出现读旧数据的现象:oracle+sql server默认隔离级别
例子:
售票员A、B,余票3张,此时有人在A处购买3张车票,A查到余票3张,点击提交订单,此时另外一个人来B购买车票,由于A的订单尚未完成,B读到的还是3张余票,准备下单,此时A的任务完成,系统提示B余票不足,这种情况B读到的3张余票就是旧数据,无效的数据
3.可重复读
解决了行记录的结果一致性(解决了脏读+读旧数据),但是会造成幻读,即某个事务在读取某个范围的数据时,另一个事务向这个范围插入了数据,导致多次读取的时候数据行数不一致:mysql默认隔离级别,理解为行锁定
4.可串行化
最高的隔离级别,强制事务串行执行,大量加锁解决幻读,性能比较低下。
在特别要求数据一致性并且并发量没有那么大的情况下才需要考虑该级别的隔离,理解为表锁定

事务隔离级别脏读不可重复读幻读
未提交读
提交读×
可重复读××
序列化×××
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值