数据库事务隔离性

数据库的四大隔离性

  1. 读未提交
  2. 读已提交
  3. 可重复读
  4. 串行化

这里主要介绍读已提交、读已提交含义就是、不会产生脏读、但是会产生可重复读、例子如下、通过下图解释可得知读已提交是避免不了可重复数据滴、原因:线程6在同一事务下、两次查询不一致、如果线程6中第一次查询后包含业务逻辑、那么在这种情况下、就会引发一定的业务问题
在这里插入图片描述
说一下锁的问题、很明显上面第二次查询被阻塞、那么阻塞特的肯定是锁、updatedelete都会产生锁、特别是在事务中、如果该事务不提交、那么就会阻塞接下来的相关执行语句、可以参考如下update阻塞问题
在这里插入图片描述
线程56基本同时执行、然后俩线程执行查询、这时候无任何锁、然而当5对数据进行了修改、这个时候6再次进行修改的时候、因为5的事务还未提交、6就产生了阻塞、一直等到线程5事务提交后、线程6的修改语句才执行完毕

我这里用的是SqlServer 经过一遍遍测试发现我修改A数据后未提交事务、如果这个时候我在另外事务中修改B的时候会被阻塞、但是如果是查询B则不会被阻塞、数据库也分为很多种、具体锁的机制可以参考一下Mysql锁机制 分析的相当全面

以我的理解来说、事务隔离性主要会对读造成影响、主要有脏读 不可重复读 幻读、但是也可能会带来更新丢失、参考投票业务、如果你是先查询、程序累加票数、再修改、那么无论该业务需不需要加事务、当并发一定大的时候都会带来更新丢失问题、这个可以参考一下乐观锁的实现方式

在针对某些业务编写代码时、不单单要考虑事务隔离性还要考虑所使用数据库的锁机制 只有全面的分析后才能得到最优的解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值