博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库之并发控制调度
阅读量:4075 次
发布时间:2019-05-25

本文共 820 字,大约阅读时间需要 2 分钟。

串行:两个事务分别执行,假设两个事务T1和T2,分别的执行过程为(T1,T2)或(T2,T1),即先执行完T1再执行T2,或先执行T2再执行T1,,事务的中间操作没有交叉。

可串行化:两个事务执行的结果和事务串行执行的结果相同,注意,这里更侧重的是结果相同。

冲突:每个事务可简化为一组针对数据库对象的read和write操作序列,则针对同一个数据库对象的操作中,在交叉执行的read和write操作序列中,如果两个操作中有一个包含了write操作,则说两个操作是冲突的,即两个操作不能交换顺序。假设这个数据库对象为X,则R1(X)和R2(X)不冲突,其中不包含write操作,R1(X)和W2(X)、W1(X)和R1(X)、W1(X)和W2(X)是冲突的。

冲突等价:把不冲突的操作进行交换,最终可以得出同一个操作序列的两个调度,称为冲突等价的。

冲突可串行化:一个调度和一个串行的调度是冲突等价的,这个调度也必然是可串行化的。

冲突可串行化和可串行化比较

情况一:依赖于具体细节:有一些可串行化的调度并非冲突可串行化的。一些调度的执行结果和串行的执行结果相同,是可串行化的,但是其依赖于具体的执行细节,比如两个事务中所有的操作都是针对同一个数据库元素的乘1操作,无论交叉执行的顺序如何,最终的结果都和串行执行的结果相同,但这依赖于乘1这样的具体细节。如果换成乘法和加法混合,则会有先乘后加还是先加后乘的问题。

情况二:后面的事务覆盖:加入有三个事务,其中T1和T2分别对数据库对象X进行write操作,即分别执行了W1(X)和W2(X),然后第三个事务对数据库对象X执行了W3(X)操作,这个调度一定是串行化的,因为最终结果去绝对第三个事务的执行结果,所以T1和T2的执行顺序可以互换,但这两个事务的操作时冲突的。

时间戳的两个问题:过晚的读和过晚的写,都是由于后发生的事务先行对数据进行了读写,而先发生的事务再对数据进行写读造成的。

转载地址:http://toyni.baihongyu.com/

你可能感兴趣的文章
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>
从超链接调用ActionScript
查看>>
谈谈加密和混淆吧[转]
查看>>
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
语法解析器!
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Flex4的可视化显示对象
查看>>