トランザクション分離レベル

トランザクション分離レベル （トランザクションぶんりレベル）または 分離レベル (英: Isolation) とは、データベース管理システム上での一括処理（トランザクション）が複数同時に行われた場合に、どれほどの一貫性、正確性で実行するかを4段階で定義したものである。隔離レベル 、 独立性レベルとも呼ばれる。トランザクションを定義づけるACID特性のうち,I(Isolation; 分離性, 独立性)に関する概念である。
概要.
データベースへの読み書き（トランザクション処理）には処理時間が発生する。複数のトランザクション処理依頼がデータベース管理システムへ行われたとき、これらを処理する1つの方法は逐次的（Serial）に1つずつトランザクションを処理する方法である。トランザクション処理に処理時間がかかることから、後に行われた処理は先に行われた処理が完了するまでの間「待ち」の状態になってしまう。
待ちを最小化するためにはデータベース管理システムが複数のトランザクションを並行（Concurrent）に処理すればよい。しかしトランザクションは必ずしも安全に並列化できるとは限らない。そのためデータベース管理システムは各並行トランザクションが互いに影響を受けず分離された安全な範囲内でトランザクションを並行化する。あるいは、異常な振る舞い（anomalies）を起こしうる分離レベルが低い並行化を許容し、代わりに並行性を高めてトランザクション処理性能を上昇させる。この安全性・一貫性と性能のトレードオフを生む、並行性トランザクションの分離具合がトランザクション分離レベルである。
トランザクション分離レベルはシステム要件に合わせデータベースの設計者によって設定される。例えば一切の異常な振る舞いが許されない金融システムには高いトランザクション分離レベルが設定される（代わりに性能は低い）。またanomaliesの可能性がある分離レベルを選択してもanomaliesを起こしえないトランザクションのみを処理するように設計すれば一貫性を保ちながら高い性能を得ることが可能になる。
分離レベル.
ANSI/ISO SQL標準で定められている分離レベルは、下記の4種類で定義されている。
anomaliesとphenomena.
並列トランザクションを並べた時に起こりうる正常ではない現象（phenomena）としてANSI SQLは以下を定義している。
またANSI SQLでは指摘されなかった並行トランザクションの起こしうるanomaliesとして以下が挙げられる。
分離レベルによって発生しうるanomaliesが異なり、開発者は受け入れられるanomaliesと性能のトレードオフを設計することができる。