1.可串行化调度

数据库管理系统对并发事务不同的调度可能会产生不同的结果,比如两个事务T1和T2,先执行T1或者先执行T2产生的结果可能是不一样的。由于串行调度没有事务间的相互干扰,所以串行调度是正确的。另外,执行结果等价于串行调度的调度也是正确的,称为可串行化调度。

可串行化(Serializable)调度

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

可串行性(Serializability) 

可串行性是并发事务正确调度的准则。可串行性调度规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。

比如,两个事务的并发调度的某一执行方式,与先执行T1后执行T2(或先执行T2后执行T1)的结果是一样的,称这一调度符合可串行化调度。

并发控制除了要保证数据的一致性之外,还要保证事务的调度是可串行化调度。

2.冲突可串行化调度

冲突可串行化,是一个比可串行化更严格的条件!

冲突操作:是指不同的事务对同一数据的读写操作和写写操作:

Ri(x)与Wj(x) /*事务Ti读x,Tj写x,其中i≠j*/

Wi(x)与Wj(x) /*事务Ti写x,Tj写x,其中i≠j*/

冲突操作的特点:涉及同一个数据库元素, 并且至少有一个是操作。

不冲突操作:

ri(X); rj(X) 两个相同对象的读操作不冲突

wi(X); rj(Y), X不等于Y,两个不同对象的操作不冲突

wi(X); wj(Y), X不等于Y,两个不同对象的操作不冲突

不能交换(Swap)的动作:

同一事务的两个操作不能交换;

不同事务的冲突操作不能交换;

例如:Ri(x)与Wj(x)

Wi(x)与Wj(x)

冲突可串行化

一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc是冲突可串行化的调度。若一个调度是冲突可串行化,则一定是可串行化的调度。

[例] 有3个事务的一个调度r3(B) r1(A) w3(B) r2(B) r2(A) w2(B)r1(B) w1(A),判断该调度是否是冲突可串行化的调度。

解:Sc1 = r3(B) r1(A) w3(B)r2(B) r2(A) w2(B) r1(B) w1(A)

由于r1(A)和w3(B)是对不同事务间的操作,所以不冲突,两个事务可以交换,由此得到:

r3(B) w3(B) r1(A) r2(B)r2(A) w2(B) r1(B) w1(A)

由于r1(A)和r2(B)r2(A) w2(B),要么都是对同一操作的读操作,要么是对不同对象的读写操作,所以不冲突,r1(A)可以与r2(B) r2(A) w2(B)交换,因此得到:

r3(B) w3(B) r2(B) r2(A) w2(B) r1(A)r1(B) w1(A)

所以:  Sc2 = r3(B) w3(B) r2(B) r2(A)w2(B) r1(A) r1(B) w1(A) ----> T3 T2 T1

因此Sc1是冲突可串行化的调度。

再例如:

Sd=r1(A)w1(A)r2(A)w2(A)r2(B)w2(B)r1(B)w1(B)

此例无论如何都不能通过无冲突交换将Sd变换为串行调度,因此Sd不是冲突可串行化的调度。

3.可串行化调度与冲突可串行化调度之间的关系

冲突可串行化调度一定是可串行化调度,但冲突可串行化调度只是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。

[例]有3个事务,T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)

调度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)是一个串行调度。

调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。

但是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值。

数据库—并发调度的可串行性相关推荐

  1. (数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度

    文章目录 一:可串行化调度 二:冲突可串行化调度 (1)冲突操作 (2)可串行化调度的充分条件:冲突可串行化 三:两段锁协议 四:封锁的粒度 (1)概念 (2)选择封锁的原则 (3)多粒度封锁 A:多 ...

  2. airflow sql_alchemy_conn mysql_airflow使用mysql数据库,LocalExecutor并发调度

    mysql-airflow 在mysql上执行 create database airflow; -- 创建数据库 GRANT all privileges on airflow.* TO 'airf ...

  3. 【眼见为实】数据库并发问题 封锁协议 隔离级别

    目录 序 数据库并发的几大类问题 ①丢失修改(Lost Update) ②不可重复读(Non-Repeatable Read) ③幻读(Phantom Read) ④读脏数据(Dirty Read) ...

  4. 订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量)

    原文:订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量) 继上一篇"订单系统开发(仿淘宝和美团网) 之 项目总结(一)",这篇博客重点想说下订单系统开发的设计和有待优 ...

  5. C# 数据库并发的解决方案(通用版、EF版)

    C# 数据库并发的解决方案(通用版.EF版) 参考文章: (1)C# 数据库并发的解决方案(通用版.EF版) (2)https://www.cnblogs.com/BluceLee/p/1061939 ...

  6. 乐观锁 与 悲观锁 来解决数据库并发问题

    乐观锁 与 悲观锁 来解决数据库并发问题 参考文章: (1)乐观锁 与 悲观锁 来解决数据库并发问题 (2)https://www.cnblogs.com/xudong-bupt/p/8614997. ...

  7. 12 Go 并发调度器模型

    一.聊聊并发这件事 在基础系列我们学习了Go的并发编程,对并发的概念已经有了一定的了解.在各种现代高级语言中,对并发的支持已经是标配,但Go的并发无论在开发效率还是在性能上都有相当的优越性.Go有什么 ...

  8. linux调度器并发,12 Go 并发调度器模型

    一.聊聊并发这件事 在基础系列我们学习了Go的并发编程,对并发的概念已经有了一定的了解.在各种现代高级语言中,对并发的支持已经是标配,但Go的并发无论在开发效率还是在性能上都有相当的优越性.Go有什么 ...

  9. 数据库并发问题和事务隔离界别

    数据库并发问题和事务隔离界别 一.数据库的并发问题 1. 脏读 2. 不可重复读 3. 幻读 二.事务隔离界别 1. Read Uncommited:读未提交的数据 2. Read Commit:读已 ...

  10. 数据库并发事务存在的问题(脏读、不可重复读、幻读等)

    一个数据库可能拥有多个访问客户端,这些客户端并发访问数据库时,若没有采取必要的隔离措施,存在以下问题,这些问题分为5类,包括3类数据读问题:脏读.不可重复读和幻读.两类数据更新问题:第一类丢失更新.第 ...

最新文章

  1. 每日一皮:在调试时,将断点设置在错误的位置...
  2. python字典可以切片吗_7.map(感觉跟python中的字典有点像)数组,切片(make)傻傻分不清楚,多多指点...
  3. linux中256错误,YUM安装遭遇: [Errno 256] No more mirrors to try
  4. python中表示单一数据的类型被称为_各种Python数据类型的完整列表
  5. MYSQL错误代码#1045 Access denied for user 'root'@'localhost'
  6. numpy 矩阵求逆_numpy 矩阵运算
  7. 无法上网之NOD32
  8. Angularjs的ng-repeat中去除重复的数据
  9. java 天上掉东西游戏的源代码_【小游戏】前两天的小游戏终于调试成功了。。。。直接源代码...
  10. 实战ASP.NET访问共享文件夹
  11. Android权限Uri.parse的几种用法 (学习日记)
  12. Javascript实现手机发送验证码
  13. 触摸按键(电容式按键)
  14. 【Hack The Box】linux练习-- SneakyMailer
  15. chrome设置主页打开为百度,免去每次都要输入网址
  16. python教科书能在ios系统操作吗_[初学python]苹果何时开放IOS降级通道啊?
  17. sshd_config配置解析
  18. matlab计算联合熵,两个图像的相互信息和联合熵 – MATLAB
  19. struct hdr_cmn
  20. 微信缴纳罚款无法连接服务器,为什么我的违章罚款在微信上交不了?原因竟是…...

热门文章

  1. 【人脸识别】基于matlab ksvd字典学习人脸表情识别【含Matlab源码 460期】
  2. 【图像隐写】基于matlab LSB算法图像隐写提取【含Matlab源码 366期】
  3. 【光学】基于matlab GUI迈克尔逊实验仿真【含Matlab源码 060期】
  4. SPSS 虚拟变量(图文+数据集)【SPSS 038期】
  5. mysql limit 算法_MYSQL分页limit速度太慢
  6. 人脸检测用什么模型_人脸检测模型:使用哪个以及为什么使用?
  7. 单元格排序_Excel中这8种简单实用的排序方法,很多人都还不会用!
  8. 5安卓输入法键盘显示 搜索_日语输入法怎么用?
  9. oracle表数据的导出到excel文件,文件怎么导出到excel表格数据库-如何导出oracle数据库中某张表到excel...
  10. bm算法java,图解 BM 算法