分離レベルとは

ぶんりれべる

同時に実行されるトランザクションどうしの干渉を、どこまで防ぐかを決める設定。SQLの標準規格では、READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE の4つがあり、上のレベルほどダーティリード、ノンリピータブルリード、ファントムリードを多く防ぐが、同時に処理できる量は減る。

「分離レベル」は、1分野の3問の練習問題に出てきます(データベースの基礎など)。

この用語の分野: データベースの基礎

分離レベルの練習問題に挑戦

SQLの標準規格が定める分離レベルのうち、READ COMMITTED で起こりうる現象の組み合わせとして正しいものはどれか。

  1. Aダーティリード、ノンリピータブルリード、ファントムリードのいずれも起こらない
  2. Bダーティリードは起こらないが、ノンリピータブルリードとファントムリードは起こりうる
  3. Cダーティリードとノンリピータブルリードは起こらないが、ファントムリードは起こりうる
答えと解説を見る

正解:B. ダーティリードは起こらないが、ノンリピータブルリードとファントムリードは起こりうる

SQLの標準規格は、分離レベルを、防ぐ現象の少ない順に READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE の4つと定めています。READ UNCOMMITTED では、3つの現象がすべて起こりえます。READ COMMITTED は、コミットされたデータだけを読むのでダーティリードを防ぎますが、読むたびにその時点のコミット済みの値を見るので、ノンリピータブルリードとファントムリードは起こりえます。REPEATABLE READ はさらにノンリピータブルリードを防ぎますが、ファントムリードは起こりえます。SERIALIZABLE は3つとも防ぎ、トランザクションをある順番で1つずつ実行した場合と同じ結果を保証します。分離レベルを上げるほど、ロックの待ち合わせや処理のやり直しが増えて、同時に処理できる量は減るので、用途に応じて選びます。実際のDBMSでは、既定の分離レベルや、各レベルで実際に防げる現象が、標準規格の最低限の定めより強い場合があります。

解説の中の「分離レベル」

「分離レベル」が出てくる問題(3問)

  1. SQLの標準規格が定める分離レベルのうち、READ COMMITTED で起こりうる現象の組み合わせとして正しいものはどれか。
  2. トランザクションを同時に実行したときに起きる問題のうち、ダーティリードの説明として正しいものはどれか。
  3. トランザクションT1が SELECT COUNT(*) FROM 注文 WHERE 金額 >= 1000 を実行したところ8件だった。その直後に、T2が金額2000の注文の行をINSERTしてコミットした。T1が同じSELECT文をもう一度実行すると9件になった。この現象はどれか。

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

SQL トランザクション ACID特性 E-R図 インデックス 外部キー 関係データベース 主キー 正規化 第3正規形

用語集の一覧へ