トランザクション処理
トランザクションは、データベースをある一貫した状態から別の一貫した状態へ変更するアクションを1つに束ねたものである。トランザクション処理は、既知の一貫した状態のデータベースを維持するよう設計されており、相互依存のある複数の操作が全て完了するか、全てキャンセルされることを保証する。
例えば、顧客の普通預金口座から当座預金口座に500ドルを移動させる典型的な銀行のトランザクションを考えて見る。このトランザクションは銀行側から見れば1つの操作であるが、コンピュータから見れば少なくとも2つの操作から構成される。普通預金口座から500ドルを引き落とし、当座預金口座に500ドルを入金するのである。引き落としが成功して入金が失敗した場合(あるいは逆の場合)、銀行の帳簿はその日の営業完了時点で不整合を生じる。したがって、2つの操作が両方成功するか、両方失敗することを保証する必要があり、それによって銀行のデータベースに不整合が生じないようにする。トランザクション処理はそのような保証をするよう設計されている。
トランザクション処理では、データベースの個々の操作が自動的に1つに連結され、不可分のトランザクションとされることがある。トランザクション処理システムは、1つのトランザクション内の全操作がエラー無しに成功するか、全操作が実行されないことを保証する。
場合によっては、2つのトランザクションの処理中にデータベース内の同じ部分に同時にアクセスしようとして、互いの処理の進行を妨げる場合がある。例えば、トランザクション A が X にアクセスし、トランザクション B が Y にアクセスしているとしよう。その状態で、A が Y にアクセスしようとし、B が X にアクセスしようとしたとき「デッドロック」が発生し、どちらのトランザクションも先に進めなくなる。トランザクション処理システムはそのようなデッドロックが発生するのを検出するよう設計されている。通常、両方のトランザクションをキャンセルし、ロールバックする。そして、自動的に順序を変えて再実行し、デッドロックが再度発生しないようにする。