トランザクション分離レベル 【transaction isolation level】

概要

トランザクション分離レベル(transaction isolation level)とは、データベース管理システム(DBMS)が複数のトランザクション処理を同時に実行する際、どの程度の独立性を保証するかを表すレベルのこと。

トランザクション処理は複数のデータ処理を一体不可分の単位として扱う実行方式で、実行の前後でデータに矛盾が無いことが要請される。実際のコンピュータシステムでは複数のトランザクションを同時に稼働させる必要があり、他のトランザクションの操作によって処理に矛盾を来さないよう適切に制御する必要がある。

トランザクションの並行性と独立性はトレードオフ(あちらを立てればこちらが立たず)の関係にあり、完全な独立性を求めれば並行に処理を進めることは難しくなり性能が犠牲になる。なるべく処理を阻害せず高速に処理しようとすれば独立性が損なわれ、他のトランザクションの処理の影響を受けやすくなる。

それぞれをどの程度の水準で両立(妥協)するかを表したのがトランザクション分離レベルで、よく知られるSQL標準では最も独立性の高い「SERIALIZABLE」から最も低い「READ UNCOMMITED」まで4段階のレベルが定義されている。

SERIALIZABLE

最も独立性(安全性)が高い分離レベルで、トランザクションを順番に実行直列化)したのと同じように、他のトランザクションデータ更新の影響をまったく受けない。アクセスが競合すると「先客」のトランザクションの終了を待たなければならないため性能は最も低い。

REPEATABLE READ

2番目に独立性が高い分離レベルで、他のトランザクションによるデータ更新の影響を受けず、トランザクション実行中は何度繰り返し対象データを読み取っても同じが返ってくる。しかし、他のトランザクションによるレコードの追加・削除の影響は受けるため、「ファントムリード」と呼ばれる現象が生じることがある。

READ COMMITED

3番目に独立性が高い分離レベルで、トランザクション実行中に他のトランザクションコミットした変更の影響を受ける。ファントムリードに加え、何度も同じデータを読み込むと他のトランザクションによる更新でが変わってしまう「ノンリピータブルリード」現象が生じることがある。多くの著名RDBMSデフォルトの分離レベルである。

READ UNCOMMITED

最も独立性が低い分離レベルで、トランザクション実行中に他のトランザクションが引き起こすあらゆる更新・変更の影響を受ける。ファントムリードノンリピータブルリードに加え、処理途上や不完全な状態のデータを読み込んでしまう「ダーティリード」現象が生じる可能性がある。処理を妨げるロックなどは最小限に抑えられるため最も高速に動作する。

(2023.3.3更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる