# デスペ道場 めも

# 03/20

# ダーティーリード(Dirty Read)

  • 他のトランザクションが更新したコミット前の値(ダーティーデータ)を読んでから, その後更新処理を行ったトランザクションがロールバックされると, 存在しない値を読み込んでしまうことによって起きる異常
  • 直列化可能性(Serializability)が保証されない状況下で発生する
    • 「直列化可能性」とは並列実行した時と直列実行した時の結果が同じになる性質のこと
  • 手順はつぎの通り
    • T1がデータを更新する
    • T2が更新されたデータを読み込む
    • T1がロールバックされる
    • T2は存在しない値を読み込んだことになる

# ノンリピータブルリード(Non-Readable Read)

  • 同じトランザクションで複数回の読み込みを行った時, 読み込むたびに値が変化してしまう異常
  • 手順はつぎの通り
    • T1がデータを読み込む
    • T2がデータを更新する
    • T1がデータを読み込む
    • T1は前回と異なるデータを読み込むことになる

# ファントムリード(Fantom Read)

  • 同じトランザクションで複数回の読み込みを行った時に, 前回は存在していなかった行が現れる現象
  • 手順はつぎの通り
    • T1がデータを読み込む
    • T2がテーブルに行を挿入する
    • T1がデータを読み込む
    • T1には前回に存在していなかった行が現れる

# 誤り訂正

  • 偶数パリティ・垂直パリティ
    • 1ビットの誤りを検出する
  • 水平垂直パリティチェック
    • 1ビットの誤りを訂正する
  • ハミング符号
    • 2ビットの誤りを検出して, 1ビットの誤りを訂正する

# 導出表

  • CREATE VIEWで作る表
  • VIEWとは名前をつけた導出表のこと

# 隔離性水準

  • トランザクションに指定できる直列化制約の度合い
  • 隔離性を高めると, 同時実行に起因する異常の数を減らせるが, 同時実行できるトランザクション数が減るので処理効率は下がる
  • つぎの順に隔離性が高くなる
    • READ UNCOMMITTED
    • READ COMMITTED
    • REPEATABLE READ
    • SERIALIZABLE

# 3層スキーマアーキテクチャ

  • 概念スキーマ, 外部スキーマ, 内部スキーマの3つのグループに分けてデータ定義を行うデータベースモデル
  • 概念スキーマ
    • データベース化対象の業務とデータの内容を論理的なデータモデルとして表現したもの
    • リレーショナルデータベース
    • ネットワークデータモデル
    • 階層型データモデル
  • 外部スキーマ
    • 利用者ごとの目的に応じた見方を表現したもの
    • リレーショナルデータベースのVIEW
    • ネットワークデータモデルのサブスキーマ
  • 内部スキーマ
    • データモデルを記憶装置上にどのような形式で格納するかを表現したもの
    • ファイル編成
    • インデクスの設定

# ACID特性

  • Atomicity(原子性)
    • トランザクション内の処理が全て実行されるか, または全く実行されないことを保証
  • Consistency(一貫性)
    • トランザクションによりデータの矛盾が生じないこと
    • 常にデータベースの整合性が保たれていることを保証
  • Isolation(独立性)
    • 複数のトランザクションについて, 同時実行時と並列実行時の結果が同じになることを保証
  • Durability(永続性)
    • 一旦正常終了したトランザクションの結果は, 以後システムに障害が発生しても失われないことを保証
Last Updated: 1年前