In database theory, what is the difference between \"conflict serializable\" and \"conflict equivalent\"?
My textbook has a section on conflict serializable but glosses
Conflict in DBMS can be defined as two or more different transactions accessing the same variable and atleast one of them is a write operation.
For example:
T1: Read(X)
T2: Read (X)
In this case there's no conflict because both transactions are performing just read operations.
But in the following case:
T1: Read(X)
T2: Write(X)
there's a conflict.
Lets say we have a schedule S
, and we can reorder the instructions in them. and create 2 more schedules S1
and S2
.
Conflict equivalent: Refers to the schedules S1
and S2
where they maintain the ordering of the conflicting instructions in both of the schedules. For example, if T1
has to read X
before T2
writes X
in S1
, then it should be the same in S2
also. (Ordering should be maintained only for the conflicting operations).
Conflict Serializability: S
is said to be conflict serializable if it is conflict equivalent to a serial schedule (i.e., where the transactions are executed one after the other).
Conflict serializable means conflict equuivalent to any serial schedule.
Definitions have already been explained perfectly, but I feel this will be very useful to some.
I've developed a small console program (on github) which can test any schedule for conflict serializability and will also draw a precedence graph.
From Wikipedia.
The schedules S1
and S2
are said to be conflict-equivalent if the following conditions are satisfied:
Both schedules S1
and S2
involve the same set of transactions (including ordering of actions within each transaction).
The order of each pair of conflicting actions in S1
and S2
are the same.
A schedule is said to be conflict-serializable when the schedule is conflict-equivalent to one or more serial schedules.
Another definition for conflict-serializability is that a schedule is conflict-serializable if and only if its precedence graph/serializability graph, when only committed transactions are considered, is acyclic (if the graph is defined to include also uncommitted transactions, then cycles involving uncommitted transactions may occur without conflict serializability violation).
If a schedule S can be transformed into a schedule S´ by a series of swaps of non-conflicting instructions, we say that S and S´ are conflict equivalent.
We say that a schedule S is conflict serializable if it is conflict equivalent to a serial schedule.
If there is at least one conflict equivalent schedule for considered transaction schedule, it is conflict serializable.