Open5

【資格勉強 - AP】3-3-4. トランザクション処理

trmsktrmsk

トランザクション処理のACID特性

  • 原子性(Atomicity)
    • コミットorロールバックのどちらかで終了する(0か1か)
  • 一貫性(Consistency)
    • データが矛盾せず整合性が取れている
    • 「データ型」「制約」で確保
  • 独立性(Isolation)
    • 並列でも順番でも結果が同じ(他処理の影響を受けない)
    • 「ロック」「スケジューリング」で確保
  • 永続性(Durability)
    • 障害が発生しても結果が失われない(耐久性)
    • 「トランザクションログ」で確保
trmsktrmsk

デッドロック

  • デッドロック
    • 共有資源を使用する2つ以上のプロセスが、互いに相手が使用している資源の解放を待機している状態
  • 共有ロック
    • データ読込(READ)に使う
    • 他トランザクションによる「更新」ができない
  • 占有ロック
    • データ更新(UPDATE)に使う
    • 他トランザクションによる「読込」「更新」ができない
  • 回答ポイント
    • 各トランザクションが「共有」「占有」どちらのロックをかけようとしているか?
    • ロックが解除されるタイミングは?(例:ROLLBACK)
    • 共有ロックは、他トランザクションによる「読込」は可能

  • 回答ポイント
    1. 資源のアンロックを待っていない(矢印の始点がない)ものを確認
    2. アンロック(矢印を削除)する
    • 1〜2を繰り返しアンロック対象がなくなった時点で、「待ち」が発生しているトランザクションがデッドロックしている
      • B, C, D, Fが正解⭕️
trmsktrmsk

B+木(びーぷらすき / B+tree)インデックス

  • 平衡木(へいこうぎ / Balanced Tree):高さのバランスを取りながら調整される木構造
    • B木:特定のキーを素早く探すのに適している
    • B+木:範囲検索や大量データの扱いに適している
  • 回答ポイント
    • 範囲検索に役立つ(NULL値や否定を含む検索には役立たない)ため、ウが正しい
trmsktrmsk

障害回復処理

  • ロールフォワード(前進復帰)(redo)
    • 対象:チェックポイント後〜障害発生までの完了したコミット
    • 方法:更新ログで、トランザクション終了時点の状態に復元する
  • ロールバック(後退復帰)(undo)
    • 対象:チェックポイント後〜障害発生までの完了していないコミット
    • 方法:更新ログで、トランザクション開始時点の状態に復元する
trmsktrmsk

2相コミット

  • 分散データベースにで、2段階に分けてコミットをおこなう手法
    • トランザクションの原子性、一貫性を維持する
  • 第1相
    • 調停者:
      • 参加者に「コミット可能か」確認
    • 参加者:
      • 調停者に「コミットの可否」を応答
      • セキュア(中間)状態に遷移して、調停者からの指示を待つ
        • この状態で調停者側に障害が発生すると、参加者は不定状態になる
  • 第2相
    • 調停者:
      • すべての参加者が「可」だった場合
        • すべての参加者に「コミット」を要求
      • 参加者のうちひとりでも「否」だった場合
        • すべての参加者に「ロールバック」を要求