zoukankan      html  css  js  c++  java
  • 数据库中冲突可串行化的判断

    1.概念

    为了描述一个程序的各部分(程序段或语句)间的依赖关系,或者是一个大的计算的各个子任务间的因果关系,我们常常采用前趋图方式。前趋图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)“→”。


    2.冲突可串行化简介
    a.可串行化调度

    多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行这些事务时的结果相同,称这种调度策略为可串行化调度。
    可串行性是并发事务正确调度的准则。
    b.冲突可串行化调度

    一个调度S在保证冲突操作的次序不变的情况下,通过交换两个事物不冲突操作的次序得到另一个调度S',如果S'是串行的,称调度S为冲突可串行化的调度。

    c.冲突操作

    不同的事务对同一数据的读写操作和写写操作。

    同一事务的两个动作冲突:ri(X);wi(X),

    不同事务对同一数据库元素的写冲突:wj(X);wi(X),

    不同事务对同一数据库元素的读和写冲突:ri(X);wj(X),

    这些都是冲突操作:r1(A) w1(A), r1(A) w2(A)  ,   w2(A)   r1(A)  ,    w1(A) w2(A)


    3.前趋图画法

    节点:  S中的事务

    弧:  Ti ->Tj whenever

    - pi(A),qj(A) 涉及同一数据库元素

    - pi(A)<qj(A)(这里指的是调度的先后顺序)

    - pi, qj 至少一个是写动作


    4.判断是否冲突可串行化

    如果存在环,   S 不是冲突可串行的, 否则, S 是冲突可串行的


    5.举个栗子

    例如S=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)

    其中w1(A)r2(A)得出T1 ->T2 ,w1(B)r2(B)得出T1 ->T2

    无环,故S是可串行调度


    6.再举一个

    S1=r2(A)r1(B)w2(A)r2(B)r3(A)w1(B)w3(A)W2(B)

    r2(A)w3(A)得出T2->T3

     r1(B)W2(B)得出T1 ->T2

    r2(B)w1(B)得出T2 ->T1

    有环,故S1 不是冲突可串行化的

    本文转载自-》链接:https://blog.csdn.net/fmc201314/article/details/53872704

  • 相关阅读:
    软件工程课堂练习-最高折扣
    小组开发项目NABC分析
    《梦断代码》阅读笔记二
    软件工程课堂练习--结对开发
    软件工程课堂练习--结对开发
    结对开发四
    电梯调度需求分析
    软件工程课堂练习——结队开发二
    电梯调度——课堂练习
    团队项目开发——用户需求调研报告
  • 原文地址:https://www.cnblogs.com/ljysy/p/12511309.html
Copyright © 2011-2022 走看看