Before we can consider how the concurrency-control component of the database
system can ensure serializability, we consider how to determine when a schedule
is serializable. Certainly, serial schedules are serializable, but if steps of multiple
transactions are interleaved, it is harder to determine whether a schedule is serializable.
Since transactions are programs, it is difficult to determine exactly what
operations a transaction performs and how operations of various transactions interact.
For this reason,we shall not consider the various types of operations that a
transaction can perform on a data item, but instead consider only two operations:
read and write. We assume that, between a read(Q) instruction and a write(Q)
instruction on a data item Q, a transaction may perform an arbitrary sequence of
operations on the copy of Q that is residing in the local buffer of the transaction.
In this model, the only significant operations of a transaction, from a scheduling
point of view, are its read and write instructions. Commit operations, though
relevant, are not considered until Section 14.7. We therefore may show only read
and write instructions in schedules, as we do for schedule 3 in Figure 14.6.