什么是冲突可串行化?

时间:2015-10-23 07:14:00

标签: database rdbms serializable

我正在谷歌阅读冲突可串行化和序列化。

但我没有得到正确的定义以及可序列化和冲突可串行化之间的区别。

我只得到一件事。那就是冲突序列化意味着可序列化。

在许多事情中,他们告诉大多数可序列化和冲突序列化是相同的。

任何人都可以通过示例解释可序列化冲突和可序列化与序列化之间的区别。

感谢您提前!

3 个答案:

答案 0 :(得分:1)

我的问题找到了答案。

Serializable表示事务以串行方式完成。这意味着如果调度完成,但事务不使用相同的变量进行读写。

实施例: -

    T1                               T2

Read(X)
                                   Read(y)

Write(X) 
                                  Write(Y)

在此示例中,两个事务不使用共享变量。 所以,在这里没有冲突。

冲突可串行化是指同时完成的事务。这两个事务使用相同的变量,事务的输出是冲突的。

实施例: -

    T1                               T2

Read(X)
                                   Read(X)
                                   Write(X)

Write(X) 
Read(Y) 
Write(Y)
                                  Read(Y)
                                  Write(Y)

在此示例中,两个事务T1和T2使用相同的变量。 因此,事务T2在T1写入之前写入X.在T1写入X之后。在这里没有使用事务T2写入。这是冲突可串行化。

答案 1 :(得分:0)

enter image description here

日程安排:是一组交易。 可序列化是交易计划的属性。它涉及数据库事务的隔离属性。时间表的可序列化意味着与连续时间表等效。

冲突可序列化可以在以下3个条件下的非序列化时间表上发生:

  • 他们必须属于不同的交易。
  • 他们必须以相同的价值运作
  • 至少有一个应该有写操作。

答案 2 :(得分:0)

为回答您的问题,我将首先解释一些术语,并引用Galvin的《操作系统》一书中的一行。

串行计划:像Premraj的答案中所示的那样,原子地执行每个交易的计划称为串行计划。

同样,当我们允许交易重叠执行时, 也就是说,它们不再是原子的,它们称为非串行 时间表

冲突的操作:这有助于查看“非串行”日程表是否等效于“串行日程表”所表示的日程表。如果两个连续的操作访问相同的数据项,并且其中至少有一个是写操作,则被认为是冲突的。

我们尝试找出并交换所有非冲突操作,如果给定的非序列化时间表可以转换为序列化时间表,那么我们说给定的时间表是可序列化冲突。