ロック
Lock
基本的には、リソースに対して使用中などを示して、他からの処理を一時的に禁止すること。
ロックされているリソースへのアクセスは、以下の3通りのどれかになる。
ロックが解けるまで待つ
諦める
ロックを強制的に外す
読み出しは複数のプロセスから行われても問題がない。
ある1つのプロセスの書き込み中には、他のプロセスは同時に読み出し書き込みはできない。
書き込み中に他のプロセスが読み書きすると、破壊されたデータが読み出されたり、書き込みでデータが破壊されてしまう。
書き込みのロックだけでは、整合性が保てないことがある。
読み出したデータを元にしてデータを書き込む場合、関連するデータを書き換えられると整合性を失ってしまう。
Aさんの銀行口座にBさんとCさんが同時に入金した場合
table:tran
t A B C ProcB ProcC
0 1000 2000 3000
1 Read A:1000, B:2000
2 Read A:1000, C:3000
3 Modify A:1100, B:1900
4 Modify A:1200, C:2800
5 1100 1900 Wrte
6 1200 2800 Write
トランザクションとなる一連の処理をロックする必要がある。