戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

データベーススペシャリスト 2020年 午前211


問題文

トランザクションの直列化可能性(serializability)の説明はどれか。

選択肢

2相コミットが可能であり、複数のトランザクションを同時実行できる。
隔離性水準が低い状態であり、トランザクション間の干渉が起こり得る。
複数のトランザクションが、一つずつ順にスケジュールされて実行される。
複数のトランザクションが同時実行された結果と、逐次実行された結果とが同じになる。(正解)

🔒 解説は解答すると表示されます

直列化可能性【午前2解説】

正解の理由

直列化可能性(serializability)とは、複数トランザクションが同時に実行されたスケジュールの結果が、ある順序で逐次(直列)に実行した場合の結果と等しくなる性質を指します。したがって、同問題の正しい選択肢は、同時実行の結果と逐次実行の結果が一致することを述べた です。
補足すると、2相コミット(2PC)は分散トランザクションのコミット手続き(原子性や全体の一貫性)に関するプロトコルであり、直列化可能性そのものを保証する仕組みではありません。一方で、隔離性(isolation)の最高水準である「Serializable(直列化可能)」は、まさに直列化可能性を意味します。つまり、2相コミットは直列化可能性と直接関係しないが、隔離性の最高レベルが直列化可能性を表す、という点は明確に区別する必要があります。

解法ステップ

  1. 「直列化可能性」の定義を思い出す:並行実行の結果が何らかの逐次実行と同じかどうか。
  2. 各選択肢を定義と照らし合わせる:
    • 並行実行の結果と逐次実行の結果が同じであれば正解。
    • プロトコル名(2相コミット)や隔離水準の高低などの記述は定義そのものではない。
  3. 最も定義に合致する記述を選ぶ()。

選択肢別の誤答解説

  • ア: 「2相コミットが可能であり、複数のトランザクションを同時実行できる。」
    • 誤り。2相コミットは分散環境でのコミット合意プロトコルであり、並行実行の結果が逐次実行と同じかどうか(直列化可能性)を定義するものではありません。また、「2相コミットが可能であること」自体が直列化可能性の条件ではありません。
  • イ: 「隔離性水準が低い状態であり、トランザクション間の干渉が起こり得る。」
    • 誤り。これは低い隔離レベル(例:Read Uncommitted)を示す説明であり、直列化可能性とは逆の概念です。直列化可能性は干渉があってもその結果が逐次と等しいことを要求します。
  • ウ: 「複数のトランザクションが、一つずつ順にスケジュールされて実行される。」
    • 誤り。これは「逐次(シリアル)スケジュール」の説明であり、直列化可能性は「同時実行でもその結果がある逐次スケジュールと同じになる」ことを意味します。ウは逐次実行そのものを述べており、直列化可能性の定義と混同しやすい点に注意。
  • エ: 「複数のトランザクションが同時実行された結果と、逐次実行された結果とが同じになる。」
    • 正解。これは直列化可能性の定義そのものです。

よくある誤解

  • 2相コミットは直列化可能性を保証する、という誤解。実際は2相コミットはコミット合意(原子性)を目的とするプロトコルであり、並行制御(直列化可能性)とは別の関心事です。
  • 直列化可能性=逐次実行しかない、という誤解。直列化可能性が満たされていれば、並行実行を行っても「結果はある逐次スケジュールと同じ」になるため、並行性は保てます。
  • 「隔離性」全般を直列化可能性と同一視する誤解。隔離性には複数レベルがあり、最高レベル(Serializable)が直列化可能性に相当しますが、他のレベル(Read Committed, Repeatable Read 等)は必ずしも直列化可能ではありません。

補足コラム

  • 直列化可能性を実現する代表的手法:
    • 厳密二相ロッキング(Strict Two-Phase Locking, S2PL):ロックの取得と解放の順序制約により直列化可能性を保証します。
    • タイムスタンプ順序付け(Timestamp Ordering):各トランザクションにタイムスタンプを付与し、それに従って競合を解決することで直列化可能性を実現します。
  • 例(簡単なスケジュールでの直列化可能性の確認)
    • T1: R(A), W(A)
    • T2: R(A), W(A)
    • 並行スケジュール: R1(A), R2(A), W1(A), W2(A)
      • このスケジュールの結果は逐次のどちらか(T1→T2 または T2→T1)と等しいかを検討して等しければ直列化可能。
  • 直列化可能性が満たされていない場合、典型的な不整合(Lost Update, Non-serializable anomalies)が発生する可能性があります。

FAQ

Q: 直列化可能性と隔離レベルは同じですか?
A: 「Serializable」という隔離レベルが直列化可能性に相当しますが、隔離レベルには他にRead CommittedやRepeatable Readなどがあり、それらは必ずしも直列化可能ではありません。
Q: 2相ロッキングと2相コミットは同じですか?
A: いいえ。2相ロッキング(2PL)は並行制御(ロックによる直列化可能性の保証)に関する方式で、2相コミット(2PC)は分散トランザクションのコミット合意手続きです。役割が異なります。
Q: 直列化可能性を満たすと性能が悪くなりますか?
A: 一般に高い直列化性を維持するほど競合で待ちが増え、スループットが低下する可能性があります。実務では性能と整合性のトレードオフで隔離レベルを選択することが多いです。

関連キーワード: 直列化可能性、Serializable、隔離性、二相ロッキング、タイムスタンプ順序付け、2相コミット、逐次スケジュール、並行制御、競合、データ整合性
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について