美文网首页
chapter09_并发控制_2_并发调度的可串行性

chapter09_并发控制_2_并发调度的可串行性

作者: 米都都 | 来源:发表于2018-12-29 11:08 被阅读0次
  • 调度:并发事务的操作顺序

  • 不同的事务处于串行关系时,一定没有状态不一致的问题

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

  • (1) 如果两个操作X和Y,读写的数据项不同,则调度中的事务操作顺序不会影响任何操作结果

    (2) 当两个操作X和Y,如果读写的数据项相同,但是它们都为读操作时,它们的顺序无关紧要

    (3) 当两个操作X和Y,如果读写的数据项相同,只要它们中有一个包含了写操作,那么操作的顺序就会影响结果

  • 非冲突操作

    (1) 定义:两个操作交换顺序时,不改变结果

    (2) 包括:

    1° 读写不同的数据项

    2° 读相同的数据项

  • 调度的冲突等价

    如果一个调度S,可以通过一系列非冲突操作执行顺序的交换变成调度S',则调度S和调度S'冲突等价

示例

    一个调度S,包含两个事务T1、T2,其中T1包括A1,A2,A3三个操作,T2包括B1,B2,B3三个操作,S的调度顺序是 A1-B1-A2-B2-A3-B3;

    如果通过一系列的非冲突操作变成调度S': A1-A2-A3-B1-B2-B3,此时调度S'变成了串行调度;

    又S和S'冲突等价,所以调度S不会造成数据不一致的问题
  • 冲突可串行调度的测试方法

    (1) 一个调度所包含的所有事务构成顶点集合

    (2) 如果事务Ti和事务Tj满足且以下三个条件之一时,它们构成一条边

    1° Ti先执行Write(A),然后Tj执行Read(A)

    2° Ti先执行Read(A),然后Tj执行Write(A)

    3° Ti先执行Write(A),然后Tj执行Write(A)

    (3) 按照(1),(2)可以得到事务S的一张图,

    如果图中出现回路,则S不是冲突可串行的;如果图中不出现回路,则S是冲突可串行的

  • 调度的状态等价

    (1) 调度的冲突等价过于严格,排斥了很多正确的并行调度,因此需要更加宽松的的定义。

    (2) 状态等价的定义

    如果初始数据库状态相同,两个调度可以产生同样的数据库状态,此时称为两个调度状态等价

    (3) 状态等价的条件

    若调度S1和调度S2状态等价,则必须满足

    1° 对每个数据项A,如果S1中的事务T1读A的初值,则S2中的T1也必须读A的初值

    2° 如果S1中的事务T1执行Read(A),则S2中的事务T1也必须执行Read(A);并且,如果S1中的T1读到的A的值是由事务T2产生的,那么S2中的T1读到的A的值也是由事务T2产生的

    3° 如果S1中有一个事务执行最后的Write(A)操作,则该事务在S2中也必须执行最后的Write(A)操作

    (4) 冲突可串行调度一定是状态可串行调度,状态可串行调度未必冲突可串行调度

相关文章

  • chapter09_并发控制_2_并发调度的可串行性

    调度:并发事务的操作顺序 不同的事务处于串行关系时,一定没有状态不一致的问题 可串行化调度:多个事务的并发执行是正...

  • 数据库并发的控制

    并发调度的可串行化 封锁 锁的分类[排它锁,共享锁] 封锁异常

  • RxSwift文档五(Schedulers)

    代码下载 Schedulers 串行与并发调度程序 自定义调度程序 内置调度程序 Schedulers抽象出执行工...

  • GCD

    队列的两种类型:并发() 串行(Serial Dispatch Queue) 串行队列:一次只调度一个任务,队列...

  • iOS多线程篇-NSOperation方法使用

    NSOperation-方法使用 一、并发数 简介(1)该属性控制队列是串行执行还是并发执行(2)如果最大并发数等...

  • 并发

    并发的解释早期的单核用时间片调度模拟并发(宏观并行,微观串行)。目前的多核CPU加上超线程技术已实现真正的并行,所...

  • 01-并发概述

    并发编程由来: 串行与并行 并发编程目的 并发编程的场景

  • java多线程(核心篇)第二章

    第二章 2.1 串行、并发与并行 并行可以被看作并发的一个特例。因此,并发往往是带有部分串行的并发,而并发的极致就...

  • Java基础—并发包-底层原理

    并发编程挑战 并发和串行,并发不一定比串行快,在不超过百万次操作时,并发比串行慢,原因在于线程有创建,上下文切换的...

  • GCD的队列(dispatch_queue_t)分哪两种类型?

    串行和并发

网友评论

      本文标题:chapter09_并发控制_2_并发调度的可串行性

      本文链接:https://www.haomeiwen.com/subject/jdsulqtx.html