IT用語帳
A-1データベース · トランザクション処理

スキュー(skew)

Skew Anomaly

すきゅー

同時に実行される複数のトランザクションが、関連する複数のデータを別々に読み書きすることで、データ間の整合性が崩れる異状。読取りスキューと書込みスキュー(write skew)があり、書込みスキューはMVCCによるスナップショット分離でも防げず、直列化可能な隔離性水準や明示的なロックで防ぐ。

共有:

Related

他の資格での定義

Related

関連キーワードの用語

PD-Dライトスキュー

スナップショット分離のもとで、2つのトランザクションが重なるデータを読み、その結果に基づいてそれぞれ別の行を更新してコミットした結果、両者を合わせると業務上の制約が破られる異状で、書込みスキューともいう。例えば「当直医が最低1人いる」ことを双方が確認してから別々の医師を外すと、当直が0人になる。同じ行への書込みの競合ではないので検出されず、SERIALIZABLEの隔離性水準か、読んだ行へのロック(SELECT ... FOR UPDATE)で防ぐ。

A-1同時実行制御(排他制御)

複数のトランザクションが同じデータに同時にアクセスしても、データの整合性が保たれるように実行を制御すること。ロック方式のほか、時刻印方式や多版同時実行制御(MVCC)などの方式があり、結果が何らかの順序で1つずつ実行した場合と同じになること(直列可能性)を目指す。

A-1MVCC(多版同時実行制御)

データを更新するときに古い版を残して複数の版を保持し、各トランザクションには開始時点などで確定していた版を読ませる同時実行制御の方式。読取りがロックを必要とせず、読取りと書込みが互いを待たないため、同時実行性が高い。多くの関係データベース製品が採用している。

APダーティリード

他のトランザクションが更新してまだコミットしていないデータを読み取ってしまう現象。更新した側が後でロールバックすると、存在しなかった値に基づいて処理したことになる。隔離性水準をREAD COMMITTED以上にすれば防げる。

APノンリピータブルリード

1つのトランザクションの中で同じデータを2回読み取ったとき、その間に他のトランザクションがそのデータを更新または削除してコミットしたために、1回目と異なる結果が読み取られる現象。反復不能読取りともいう。隔離性水準をREPEATABLE READ以上にすれば防げる。

APファントムリード

1つのトランザクションの中で同じ条件の検索を2回行ったとき、その間に他のトランザクションが条件に合う行を挿入してコミットしたために、1回目には無かった行が現れる現象。既に読んだ行にロックを掛けても防げず、SQL標準では隔離性水準をSERIALIZABLEにする必要がある。