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

  • 相关阅读:
    USBkiller 破解绿色版 by TK
    北京理工大学信息安全与对抗竞赛crackme02分析
    EnMp3Player 破解
    IDA相关下载
    猜数游戏 by TK QQ:86935367
    mp3播放器 by TK QQ:86935367
    UPX Easy GUI 汉化版by TK
    superdic cracked by TK
    vc 获取机器码
    (转)UITableView使用
  • 原文地址:https://www.cnblogs.com/ljysy/p/12511309.html
Copyright © 2011-2022 走看看