继续执行;
② 顺序封锁法,是预先对数据对象规定一个封锁顺序,搜有事务都按这个顺序实行封锁。
23.答:
检测死锁发生的一种方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁,使其他事务得以继续运行下去。
解除死锁问题有两类方法:一类方法是采用一定措施来预防死锁的发生;另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有则解除之。 24.答:
如果一个事务运行过程中没有其他事务同时运行,即没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的,可串行性是并发事务正确性的准则,为了保证并发操作的正确性,DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的。 25.答:
所谓两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁;
(1) 在对任何数据进行读,写操作之前,首先要申请并获得对该数据的加锁; (2) 在释放一个封锁之后,事务不再申请并获得对该数据的封锁
即每个事务分成两个阶段,第一阶段是申请和获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能再申请任何锁。 26.答:
事务T要对关系R1加X锁时,系统只需检查根节点数据库和关系R1是否已加入了不相容的锁,而不再需要搜索和检查R1中的每一个元组是否加了X锁,对任一元组加锁,必须先对他所在的关系加意向锁。意向的含义是:如果对一个节点加意向锁,则说明该节点的下层节点正在被加锁;对任何一结加锁时,必须先对它的上层节点加意向锁。 27.答:
(1) 封锁:封锁是使事务对它要操作的数据有一定的控制能力。
(2) 活锁:这种在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。 (3) 死锁:这种多事务交错等待的僵持局面称为死锁。
(4) 排它锁:排它锁也称为独占或写锁。一旦事务T对数据对象A加上排它锁,则只允许T
读取和修改A。其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。
(5) 共享锁:共享锁又称为读锁。如果事务T对数据对象A加上共享锁,其他事务只能再对A
加S锁,不能加X锁,知道事务T释放A上的S锁为止。
(6) 并发事务的调度:多个事务并发执行调度策略称为并发事务调度。 (7) 可串行化的调度:如果多个事务并发执行的结果与按串行执行的结果相同,这种调度策略
称为可串行化的调度。
两段锁协议:所谓两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。