情報処理技術者試験(データベーススペシャリスト)のキーワードメモ(三)
■分離レベル
- READ UNCOMMITTED 共有ロック、排他ロックも使用されない、最も隔離性の緩やかなレベルです。ダーティリード、ノンリピータブルリード、ファントムインサートが発生する可能性があります。
- READ COMMITTED トランザクションが開始されて、まだコミットされていない場合には、他のトランザクションからはデータを参照することができないレベルです。従って、ダーティリードは発生しません。しかし、他のトランザクションによりデータの変更は可能なため、ノンリピータブルリード、ファントムインサートが発生する可能性があります。
- REPEATABLE READ トランザクションが完了するまで共有ロックが継続されるので、一度読み取ったデータが他のトランザクションによって変更されることはありません。ファントムインサートが発生する可能性があります。
- SERIALIZABLE 他のトランザクションからは完全に隔離したレベルで、他のトランザクションの影響を一切うけません。トランザクション実行中に、他のトランザクションがアクセスしても、そのトランザクションは待機状態になり、前のトランザクションが終了するまでデータにアクセスすることができません。
■分離レベルと発生事象
- 分離レベルによって発生した事象
- ロストアップデート Lost Update あるトランザクションで変更した値が、他のトランザクションにより別の値に変更されてしまうこと。
- ダーティリード Dirty Read 他のトランザクションがデータの変更を取り消したにも関わらず、取り消し前にそのデータを読み出してしまうこと。
- ノンリピータブルリード No-Repeatable Read あるトランザクションにおいて、同じ行を 2 回読み込んだときに、1 回目と 2 回目の読み込みの間に、他のトランザクションが行の値の変更を行ったために、1 回目と 2 回目で読み込んだデータの値が異なってしまうこと。
- ファントムインサート Phantom Insert あるトランザクションにおいて、WHERE 句等による同じ条件により行を読み込んだときに、その途中に他のトランザクションがその条件に影響を与える行の挿入を行ったために、先に読み込んだ行と後に読み込んだ行が異なってしまうこと。
- 分離レベルと発生事象の関係表
■ビュー
更新可能なビューは元の列に特定可能なものに限る
体現ビューはビューのデータをデータベースに実に格納する
■ストアドプロシージャ
処理高速化
通信量を抑える