数据库可串行化
‘壹’ 数据库串行化的实现方法
需要如下步骤即可:
(1) 从CObject类派生或者从CObject类派生的某个派生类
(2) 重写Serialize成员函数,把类的数据成员写入文件。
(3) 在类声明中使“DECLARE_SERIAL”宏。
(4) 定义不带参数的构造函数。
(5) 在类的实现文件中使用。“IMPLEMENT_SERIAL”宏
‘贰’ 如何判断数据库的可串行化调度
可串行化调度:对于事务集(t<1>,t<2>,…,t),如果一个并发调度的结果与一个串行调度等价,则称此调度是是可串行化调度。
不可串行化调度:对于某事务集的一个并发调度结果如果与任一串行调度均不等价,则该调度是不可串行化调度。
‘叁’ 数据库考试题如何找冲突可串行化等价的串行化方案
这个是个可串行化调度,可以根据对数据库元素XYZ的 冲突访问画优先图来进行判断,如果没有环,那么就是可串行化的
第二个问 就是把串行化的调度顺序写出来,串行化调度为:
T3(R(Y))T3(W(Y))T3(R(Z))T4(R(Z))T4(W(Z))T1(R(X))T1(W(X))T1(W(Y))T2(R(X))T2(W(X))T2(R(Y))
根据这个可以基于冲突规则进行置换的,因此有
T3(R(Y))T3(W(Y))T3(R(Z))T1(R(X))T1(W(X))T1(W(Y))T2(R(X))T2(W(X))T2(R(Y))T4(R(Z))T4(W(Z))
T3(R(Y))T3(W(Y))T3(R(Z))T1(R(X))T1(W(X))T1(W(Y))T4(R(Z))T4(W(Z))T2(R(X))T2(W(X))T2(R(Y))
‘肆’ 数据库如何找冲突可串行化等价的串行化方案看不懂书上的内容,怎么画优先图啊求详解或视频 谢谢
首先确定冲突操作:
同一事务的两个动作冲突: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),
优先图的画法如下:
节点: S中的事务
弧: Ti ->Tj whenever
- pi(A), qj(A) 涉及同一数据库元素
- pi(A) <S qj(A)
- pi, qj 至少一个是写动作
如果存在环, S 不是冲突可串行的, 否则, S 是冲突可串行的
例如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
无环,所以是可串行调度
再如: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 不是冲突可串行化的
‘伍’ 数据库中的可串行化是什么意思
可串行化调度:对于事务集(T<1>,T<2>,…,T),如果一个并发调度的结果与一个串行调度等价,则称此调度是是可串行化调度。
不可串行化调度:对于某事务集的一个并发调度结果如果与任一串行调度均不等价,则该调度是不可串行化调度。
‘陆’ 可串行化调度的简介
可串行调度是指不管数据库初态处于什么状态,一个调度对数据库状态的影响都和某个串行调度相同,我们就说这个调度是可串行化。了解可串行化调度必须要知道调度和串行调度是什么。
‘柒’ 如何判断数据库的可串行化调度
利用画优先图的方法
对于每个数据库元素,如果两个事务的冲突操作同时操作一个元素,则有一条有向边,如果最后有环,则不是可串行化的
以第一个为例
w1(A)w2(A) T1->T2
r1(B)w2(B) T1->T2
所以是可穿行化的
S2:
A: t1(A)w3(A) T1->T3 w3(A)w1(A) T3->T1
B: r2(B)w1(B) T2->T1 w1(B) r3(B) T1->T3
C:w1(C) w2(C) T1->T2
里面有环,所以不可串行化
‘捌’ 数据库冲突可串行化的答案有多个吗
可以有多个,只要不存在写-写,读-写和写-读这三类冲突,就可以定义为冲突可串行化。
所以调整出来就有可能有多个答案
‘玖’ 数据库 可串行化是什么什么是冲突可串行化
冲突可串行性是指一个调度,如果通过交换相邻两个无冲突的操作能够转换到某一个串行的调度,则称此调度为冲突可串行化的调度。
如:
r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)
交换操作的次序:
r1(A); w1(A); r2(A); r1(B); w2(A); w1(B); r2(B); w2(B)
r1(A); w1(A); r1(B); r2(A); w2(A); w1(B); r2(B); w2(B)
r1(A); w1(A); r1(B); r2(A); w1(B); w2(A); r2(B); w2(B)
得到了串行调度
r1(A); w1(A); r1(B); w1(B); r2(A); w2(A); r2(B); w2(B)
其次:可串行包含冲突可串行。