软设之数据库并发控制

事务的特性

原子性:事务是原子的,要么都做,要么都不做

一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态

隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的。

持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效

并发问题

并发产生的问题丢失更新
不可重复读问题
读‘脏‘数据’

更新丢失

T1T2

读A=10

A=A-5写回

读A=10

A=A-8写回

嘉定A的值是10,T1一开始读取之后,做了A-5写回。T2在T1写回操作前也读取了A,A=10,也做了A=A-8写回,把T1写回给覆盖了。

不可重复读

假定A=20,B=30

TI读取了AB的值,进行一次A+B求和,结果是50。T2也读取了A的值,并进行了A+50的操作,A的值变为70,之后T1再读取A,B的值,再进行A+B的操作,结果是100,和头一次A+B的值对不上

读“脏”数据

假定A的值是20,T1进行了A+50的操作,A的值变为70,接着T2读取A,这时候A的值是70,再之后,T1进行了回滚,撤销了+50的操作,A变回20,而T2那边的值还是70,产生冲突

并发产生问题解决思路

封锁协议

X锁(写锁/排他锁/独占锁)的加锁规则

若事务T对数据对象A加上X锁,其他事务不能再对A添加任意锁

S锁(共享锁/读锁)的加锁规则

若事务T对数据对象A加上S锁,其他事务只能对A再加S锁,不能再对A添加X锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值