←講義のツボメニューへ
トランザクション処理とデータベース制御 概説 同時実行制御
2000.12.21 第10回
- 同時実行制御
- 「同時実行」は、複数の処理が同時に同じデータを利用する場合の不具合を避けようとするものである。
ある瞬間をとると、処理を一つしか実行されていないが、ある時間区域でみると、見掛け上、複数の処理が同じデータをアクセスしている場合がある。
例でそのような場合を示してみる。
小売業{たとえばスーパーマーケット)で多数のレジでの商品の売り上げを行っているとする。売り上げの結果、商品の在庫が更新される処理プログラムがあるとする。そのプログラムは各々のレジで独立に実行されているとする。
処理プログラムの流れは下図のように表される。このような処理プログラムが、レジA、Bの二つで実行されたとする。たまたま二つのレジで同じ商品の売り上げが下図のようなタイミングで起きたとする。その商品は最初に10個の在庫があり、レジAでは3個、レジBでは5個の売り上げがあったとする。結果としての、在庫数がどのようになるかを時間軸で調べてみる。

各々の種類別にみれば、正しく処理が行われている(一貫性は保たれている)。しかし、同時に同じデータを処理している場合には、例に示す通り結果として、在庫数は2であるべき所、5となっている。
このような場合を避けるには、ある処理が特定のデータを読み取った場合は、そのデータはトランザクション処理が終了するまでアクセスさせないという仕組みを施す子とで解決する。
このように、「同時実行」が行われる場合、「同時実行制御」が必要になる。