情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 データベース トランザクション処理 排他制御
排他制御とは、英語でexclusive controlといいます。デットロックなど、具体例を用いてデータベースの排他制御について解説しています。
このページの目次です。
1. 排他制御とは
2. 排他制御の具体例
3. デッドロック
排他制御とは、複数のプロセスからの同時アクセスにより競合が発生する場合に、 あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理のことをいいます。
DBMSにおいて、複数のトランザクション処理プログラムが同一データベースを同時に更新する場合、 論理的な矛盾を生じさせないために用いる技法です。
排他制御は英語で、exclusive controlといいます。 その他に、exclusive access controlという英語が使われることもあります。
データベースのトランザクション処理においてもデータの整合性を保つために、 複数のトランザクションが同時にデータベースのデータを更新することが起こらないように排他制御を行います。
データベース管理システムにおける排他制御の目的は、 複数のプログラムが同一のデータを同時にアクセスしたときに、データの不整合が生じないようにすることです。
DBMSがトランザクションのコミット処理を完了とするタイミングは、ログファイルへのコミット情報書込み完了時点です。
以下では排他制御に関連したIPA情報処理試験の過去問とその解説をまとめています。
排他制御の解説のため、具体例を見ていきます。
排他制御が機能していない例について見ていきます。
Webページへのアクセス件数を調べる目的で作成したアクセスカウンタですが、このアクセスカウンタはデータの整合性が保たれない状態です。
図に示すとおり、2人の閲覧者が同時にアクセスがあったときに共有資源に対しての排他制御が行われないため、サーバ内の処理は①~④の順序で実行できてしまいます。
本来は、①の処理の時にロックをかけて、②の処理はそのロックが解けてから処理を行うべきですがそうなっておらず、 2人がアクセスする前のアクセスカウンタの値が100であったとすると、処理④が終了した時点のアクセスカウンタの値が101と2人分のカウントが行われません。
デッドロックとは、複数のタスクが共通の資源をロックして使用するとき、互いに資源が解放されるのを待って、処理が停止状態になることです。 デッドロックには、読み取り時に使用する共有ロックと、変更時に用いる占有ロックがあります。
ロックはテーブルの更新直前にテーブル単位で行い、アンロックはトランザクション終了時に行う方式で、表のように処理した場合、⑥でデッドロックが発生します。
トランザクションA | トランザクションB |
---|---|
①トランザクション開始 ③テーブルa更新 ⑤テーブルb更新 ⑦トランザクション終了 |
②トランザクション開始 ④テーブルb更新 ⑥テーブルa更新 ⑧トランザクション終了 |
表の場合、トランザクションAが開始されテーブルaの更新③前にロックをかけます。 トランザクションBも開始されテーブルbの更新④前にロックをかけます。
そして、トランザクションAがテーブルbを更新しようとすると、テーブルbがトランザクションBによってロックがかかっていますので待ちます。
この後、⑥でトランザクションBがテーブルaを更新しようとすると、トランザクションAによってロックがかかっているので待ちになります。
トランザクションAもトランザクションBも待ちあっている状態となり、デッドロックになります。
デッドロックの発生を防ぐには、資源獲得の順序を両方のタスクで同じにします。 順序が同じであれば、先のタスクが資源を獲得しているときは後のタスクはその資源を獲得することができないので、デッドロックは発生しません。
以下ではデッドロックに関連したIPA情報処理試験の過去問とその解説をまとめています。
トランザクションとは、利用者から見たデータベースに対する処理の単位です。 利用者からみた場合は1つのデータベース更新処理ですが、データベースから見れば複数の利用者からの処理依頼があり、 データベースの更新を矛盾なく行う必要があります。 データベースにおけるトランザクションの意味、ACID特性などの解説をまとめています。
データベースの方式、設計、データ操作、トランザクション処理、応用など。データベース関連のオリジナルテキストと情報処理試験の過去問もまとめています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…