《数据库系统概论》第十一章 并发控制

第十一章 并发控制

1.并发操作带来的数据不一致性包括丢失修改,不可重复读和读“脏”数据

丢失修改(lost update):两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被覆盖

不可重复读(non-repeatable read):T1读取数据后T2进行了修改删除或者插入,然后T1再次读的时候读到的数据就不对了

读“脏”数据(dirty read):T1修改某一数据后将其写回磁盘,但是由于某些原因,T1回滚,操作被撤销,但是T2读到的还是之前修改好的数据,也就是“脏”数据。

2.并发控制的主要技术有:封锁(locking)、时间戳(timestamp)、乐观控制法(optimistic scheduler)和多版本并发控制(multi-version concurrency control MVCC)

3.基本的封锁类型有:排它锁(exclusive locks),又称为写锁,若事务对数据加上排它锁X锁之后可以对数据进行读写,但是其他事务都不能再加锁,直到事务释放了X锁为止

共享锁(share locks),又称为读锁,若事务对数据加上S锁,可以对数据进行读操作,并且其他事务不能再加X锁但是可以加S锁。

4.封锁协议:一级封锁协议:事务T对数据R进行修改之前必须对其添加X锁,知道事务结束才释放

二级封锁协议:在一级封锁协议的基础上,加上事务读取数据之前必须加上S锁,读完后即可释放S锁

三级封锁协议:在一级封锁协议的基础上,加上事务读取数据前必须加上S锁,直到事务结束才释放

5.死锁的诊断:超时法:如果一个事务的等待时间超过了规定的时限,就确认发生了死锁;

等待图法:事务等待图是一个有向图G=(T,U),T是事务节点,U是事务的等待情况,如果等待图中出现了环路就认为出现了死锁的情况

6.可串行化调度:多个事务并发执行顺序是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同

可串行性(serializability)是并发事务正确调度的准则

7.显示封锁是应事务要求直接加在对数据对象上的锁;隐式封锁是加在数据上级结点的牵连锁;意向锁是用来指示下级结点也有锁的锁

8.IS锁:表示对后代结点拟加S锁(共享锁)

IX锁:表示对后代结点拟加X锁(排它锁)

SIX锁:对自己加S锁,拟对后代结点加X锁

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/82729232