Processing, Concurrency Control, and Recovery
to Transaction Processing Concepts and Theory
The concept of transaction provides a mechanism for describing logical
units of database processing.
Transaction processing systems are systems with large databases and hundreds of concurrent users executing database transactions. Examples of such
systems include airline reservations, banking, credit card processing, online
retail purchasing, stock markets, supermarket checkouts, and many other
applications. These systems require high availability and fast response time
for hundreds of concurrent users. In this chapter we present the concepts that
are needed in transaction processing systems. We define the concept of a
transaction, which is used to represent a logical unit of database processing
that must be completed in its entirety to ensure correctness. A transaction is
typically implemented by a computer program, which includes database commands
such as retrievals, insertions, deletions, and updates. We introduced some of
the basic techniques for database programming in Chapters 13 and 14.
In this chapter, we focus on the basic concepts and theory that are
needed to ensure the correct executions of transactions. We discuss the
concurrency control problem, which occurs when multiple transactions submitted
by various users interfere with one another in a way that produces incorrect
results. We also discuss the problems that can occur when transactions fail,
and how the database system can recover from various types of failures.
This chapter is organized as follows. Section 21.1 informally discusses
why concurrency control and recovery are necessary in a database system.
Section 21.2 defines the term transaction
and discusses additional concepts related to transaction processing in
database systems. Section 21.3 presents the important properties of atomicity,
consistency preservation, isolation, and durability or permanency—called the ACID properties—that are considered desirable
in transaction processing systems. Section 21.4 introduces the concept of
schedules (or histories) of executing transactions and characterizes the recoverability of schedules. Section
21.5 discusses the notion of serializability
of concurrent transaction execution, which can be used to define correct
execution sequences (or schedules) of concurrent transactions. In Section 21.6,
we present some of the commands that support the transaction concept in SQL.
Section 21.7 summarizes the chapter.
The two following chapters continue with more details on the actual
methods and techniques used to support transaction processing. Chapter 22 gives
an overview of the basic concurrency control protocols and Chapter 23
introduces recovery techniques.