数据库并发控制、锁的简单理解

并发控制


并发优点

 为什么要并发,或者说并发有什么好处?
  1、并发可以改善CPU等资源的资源利用率,提高系统效率。(这里类比操作系统,有些进程在等待IO的时候,可以把CPU让出来给别的进程用)
  2、不同事物可能访问数据库的不同内容,这样可以提高数据库的利用率。(数据库里面那么多表,一个事物也就访问几个或者十几个,不并发太浪费了些)

三大并发问题

刚刚说了并发的好处,在提到第二个好处的时候,对于“访问数据库不同的内容”,如果两个事物访问数据库的内容有交叉怎么办?以下图为例:
在这里插入图片描述
因此在并发过程中会遇到并发冲突的问题,只有解决好了这些问题,并发才能较为顺利的完成。

  • 1、丢失修改——写-写冲突
  • 2、读脏数据——写-读冲突
  • 3、不可重复读——读-写冲突

接下来分析一下这三个并发问题:

  • 1.丢失修改。也就是说:其中一个事物对数据库的修改会被另一个并发事务覆盖,从而导致这个事务所作的修改被覆盖了。举个例子:
事务T1 事务T2
Read(x)
Read(x)
x = x+2
x = 5*x
write(x)
write(x)

假设x的初值为6,事务T1修改完x之后,x的值为8,之后被写回到数据库中。但是刚写回数据库,就被事务T2计算的x结果30覆盖了,就好像T1这个事务啥都没干一样。

  • 2、读脏数据。所谓读脏数据,就是读取正在更新的数据。因为事务在进行一半的时候,很有可能因为故障或者因为其他原因要进行回退的,如果另一个事务T2读了事务T1正在更新的数据,就会因为T1的回退而产生多米诺效应,也要跟着回退。举个例子:
事务T1 事务T2 事务T3
write(x)
read(x)
y = x+1
write(y)
read(y)
z = y+2
write(y)
故障 -> R
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值