什么是冲突可串行化?

What is Conflict serializability?

我正在 google 中阅读有关冲突可序列化性和可序列化的内容。

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

我只得到一个 thing.That 冲突可序列化意味着可序列化。

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

任何人都可以用示例解释什么是可序列化冲突以及可序列化性和可序列化之间的区别。

感谢提前!

我的问题找到了答案。

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 写入。这就是冲突可串行化。

时间表:是一捆交易。 可串行化是一个 属性 事务调度。它涉及数据库事务的隔离属性。调度的可序列化意味着等同于串行调度。

在以下 3 种情况下,Non-Serializable 计划可能会发生可序列化冲突:

  • 它们必须属于不同的交易。
  • 它们必须对相同的值进行运算
  • 至少其中一项应该有写操作。

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

Serial Schedule : A schedule in which each transaction is executed atomically is called a serial schedule just like it's shown in Premraj's answer.

Likewise, when we allow the transactions to overlap their execution, i.e they aren't atomic any longer, they're called Non Serial Schedule.

Conflicting Operations : This helps to see whether a Non Serial schedule is(not) equivalent to the one represented by Serial Schedule. Two consecutive operations are said to be in conflict if they access the same data item and at least one of them is write operation.

我们尝试找出并交换所有非冲突操作,如果给定的非串行调度可以转换为串行调度,我们说给定的调度是冲突可序列化的。