数据库并发控制
事务
事务是一系列操作的封装.
产生原因:有些操作之间是有关联的,需要一次性来执行完毕,否则会出错.
egg:银行转账:从转出方扣除 + 向转入方进账.
特点
原子性:要么全做,要么全不做,不能拆开来做.
一致性:执行前后数据都是一致的状态(eg:转账前后两个账户之和是一致的)
隔离性:事务之间是独立进行的,互不影响
持续性:执行之后它的结果是持续的.
事务能够更好地进行并发操作.
T1,T2代表事务(transaction)
不可重复读:
在T1准备验算的时候,T2把A的值更新成了70,导致验算失败.
脏数据:
70是一个临时的数据,T1后来回滚恢复成了20,T2一直用的是70.
封锁协议:
X锁:写锁
S锁:读锁
读锁加上去之后,别人还可以对数据加读锁,但不能加写锁;
写锁加上去之后,不能够再加任何锁.
一级:比如丢失更新的例子,T1在读之前加锁,写回之后再解锁
二级是在一级的基础上.