Precedence Graph
   HOME

TheInfoList



OR:

A precedence graph, also named conflict graph and
serializability In the fields of databases and transaction processing (transaction management), a schedule (or history) of a system is an abstract model to describe the order of executions in a set of transactions running in the system. Often it is a ''list'' o ...
graph, is used in the context of
concurrency control In information technology and computer science, especially in the fields of computer programming, operating systems, multiprocessors, and databases, concurrency control ensures that correct results for concurrent operations are generated, whil ...
in
database In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
s. It is the directed graph representing precedence of transactions in the schedule, as reflected by precedence of conflicting operations in the transactions. A schedule is ''conflict-serializable''
if and only if In logic and related fields such as mathematics and philosophy, "if and only if" (often shortened as "iff") is paraphrased by the biconditional, a logical connective between statements. The biconditional is true in two cases, where either bo ...
its precedence graph of ''committed transactions'' is '' acyclic''. The precedence graph for a schedule S contains: * A node for each committed transaction in S * An arc from Ti to Tj if an action of Ti precedes and conflicts with one of Tj's actions. That is the actions belong to different transactions, at least one of the actions is a write operation, and the actions access the same object (read or write). Cycles of committed transactions can be prevented by aborting an ''undecided'' (neither committed, nor aborted) transaction on each cycle in the precedence graph of all the transactions, which can otherwise turn into a cycle of committed transactions (and a committed transaction cannot be aborted). One transaction aborted per cycle is both required and sufficient in number to break and eliminate the cycle (more aborts are possible, and can happen under some mechanisms, but are unnecessary for serializability). The probability of cycle generation is typically low, but, nevertheless, such a situation is carefully handled, typically with a considerable amount of overhead, since correctness is involved. Transactions aborted due to serializability violation prevention are ''restarted'' and executed again immediately.


Precedence graph examples


Example 1

:S = \begin T1 & T2 \\ R(A) & R(A) \\ A=A*5 & R(B) \\ W(A) & B=B+A \\ R(B) & W(B) \\ B=B*10 & \\ W(B) & \\ \end


Example 2

:D = R1(A) R2(B) W2(A) Com.2 W1(A) Com.1 W3(A) Com.3 A precedence graph of the schedule D, with 3 transactions. As there is a cycle (of length 2; with two edges) through the committed transactions T1 and T2, this
schedule A schedule (, ) or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such thing ...
(history) is ''not'' Conflict serializable. Notice, that the commit of Transaction 2 does not have any meaning regarding the creation of a precedence graph.


Example 3

Algorithm to test ''Conflict Serializability'' of a Schedule S along with an example schedule. S = \begin T1 & T2 & T3 \\ R(A) & & \\ & W(A) & \\ & Com. & \\ W(A) & & \\ Com. & & \\ & & W(A)\\ & & Com.\\ \end :or S = R1(A) W2(A) Com.2 W1(A) Com.1 W3(A) Com.3 # For each transaction Tx participating in schedule S, create a node labeled Ti in the precedence graph. Thus the precedence graph contains T1, T2, T3. # For each case in S where Tj executes a ''read_item''(X) after Ti executes a ''write_item''(X), create an edge (Ti → Tj) in the precedence graph. This occurs nowhere in the above example, as there is no read after write. # For each case in S where Tj executes a ''write_item''(X) after Ti executes a ''read_item''(X), create an edge (Ti → Tj) in the precedence graph. This results in a directed edge from T1 to T2 (as T1 has ''R(A)'' before T2 having ''W(A)''). # For each case in S where Tj executes a ''write_item''(X) after Ti executes a ''write_item''(X), create an edge (Ti → Tj) in the precedence graph. This results in directed edges from T2 to T1, T2 to T3 and T1 to T3. # The schedule S is serializable if and only if the precedence graph has no cycles. As T1 and T2 constitute a cycle, the above example is not (conflict) serializable.


References

{{Reflist


External links


The Fundamentals of Database Systems, 5th Edition
the use of precedence graphs is discussed in chapter 17, as they relate to tests for conflict serializability. *
Abraham Silberschatz Avi Silberschatz (; born in Haifa, Israel) is an Israeli computer scientist and researcher. He is known for having authored many influential texts in computer science. He finished high school at the Hebrew Reali School in Haifa and graduated ...
, Henry Korth, and S. Sudarshan. 2005. Database System Concepts (5 ed.), PP. 628–630. McGraw-Hill, Inc., New York, NY, USA. Database management systems el:Γράφος Σειριοποιησιμότητας ru:Граф предшествования