数据库并发控制

事务

事务是一系列操作的封装.

产生原因:有些操作之间是有关联的,需要一次性来执行完毕,否则会出错.

egg:银行转账:从转出方扣除 + 向转入方进账.

特点

原子性:要么全做,要么全不做,不能拆开来做.

一致性:执行前后数据都是一致的状态(eg:转账前后两个账户之和是一致的)

隔离性:事务之间是独立进行的,互不影响

持续性:执行之后它的结果是持续的.

 

事务能够更好地进行并发操作.

数据库并发控制

 

T1,T2代表事务(transaction)

不可重复读:

在T1准备验算的时候,T2把A的值更新成了70,导致验算失败.

脏数据:

70是一个临时的数据,T1后来回滚恢复成了20,T2一直用的是70.

数据库并发控制

 

*协议:

X锁:写锁 

S锁:读锁

读锁加上去之后,别人还可以对数据加读锁,但不能加写锁;

写锁加上去之后,不能够再加任何锁.

 

一级:比如丢失更新的例子,T1在读之前加锁,写回之后再解锁

二级是在一级的基础上.

 

数据库并发控制