• 数据库的两段锁协议


    数据库的两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁
    1.扩展阶段
    在对任何数据项的读、写之前,要申请并获得该数据项的封锁。
    2.收缩阶段
    每个事务中,所有的封锁请求必须先于解锁请求。
    例如:事务T遵循两段锁协议,其封锁协议为:
    BEGIN TRANSACTION;
    LOCK(A);READ A; A := A + 100; WRITE A; LOCK(B); UNLOCK(A); READ(B), UNLOCK(B),;
    COMMIT;     
    可以证明:若并发执行的所有事务均遵守两段锁协议,则对这些并行事务的任何并行调度策略都是可串行化
    需要说明的是,并发执行的所有事务若均遵守两段锁协议,只是这些事务的并行调度策略能可串行化的充分条件,不是必要条件。
    两段锁协议与防止死锁的一次封锁法的区别:
    一次封锁法要求事务必须一次对所有要使用到的数据项进行加锁,否则不能继续运行。
    显然,一次封锁法符合两段锁协议,但是两段锁协议并不要求一次就要对所有需要用到的数据项进行加锁,因此遵守两段锁协议的事务有可能死锁
  • 相关阅读:
    uva 1374 快速幂计算
    uva 1343 非原创
    uva 11212
    uva 10603
    路径寻找问题……!
    bzoj 1008: [HNOI2008]越狱
    bzoj 1010: [HNOI2008]玩具装箱toy
    dp斜率优化小计
    bzoj 1002[FJOI2007]轮状病毒
    hihocoder #1114
  • 原文地址:https://www.cnblogs.com/306b/p/2828238.html
Copyright © 2020-2023  润新知