並行性制御とは何ですか?
データ管理プログラミングでは、並行性制御は、同時操作によって正確な結果が生成されるように設計されたメカニズムです。これらの結果は、タイムリーに取得する必要があります。同時実行制御は、ユーザーが取得できる検索可能な情報のキャッシュがあるデータベースで非常によく見られます。
プログラマーは、共有データに対する重要なトランザクションの影響が連続的に同等になるようにデータベースを設計しようとします。 これが意味することは、すべてのトランザクションがシリアルおよび特定の順序で実行された場合、トランザクションのセットと接触するデータは特定の状態であるということです。 同時に、2つのトランザクションによって変更された結果としてそのデータが無効になることがあります。
トランザクションが相互除外の使用や、どのトランザクションにアクセスできるかを決定するリソースを作成するなど、トランザクションが次々と実行されることを保証する複数の方法があります。しかし、これはやり過ぎですプログラマーが分散システムでの並行性制御の恩恵を受けることはできません。並行性制御により、複数のトランザクションを同時に実行でき、これらのトランザクションを互いに遠ざけ、線形化可能性を確保します。同時実行制御を実装する1つの方法は、リソースを共有するシリアルトランザクション実行のための特定のリソースに排他的ロックを使用することです。トランザクションは使用することを目的としたオブジェクトをロックし、他のトランザクションがロックされているオブジェクトを要求した場合、そのトランザクションはオブジェクトのロックを解除するのを待つ必要があります。
分散システムでのこのメソッドの実装には、ロックマネージャーが含まれます。これは、リソースロックを発行するサーバーです。 これは、一元化された相互除外のサーバーに非常に似ており、クライアントはロックを要求し、特定のリソースでロックをリリースするためのメッセージを送信できます。シリアルexeの保存ただし、並行性制御には依然として必要です。 2つの個別のトランザクションが同様のオブジェクトセットにアクセスする場合、結果は類似している必要があり、これらのトランザクションが特定の順序で実行されたかのようです。リソースへのアクセスの順序を確保するために、2フェーズロックが導入されます。つまり、別のロックのリリース時にトランザクションが新しいロックを許可されていません。並行性制御のための2相ロックでは、その初期フェーズは、トランザクションが必要なロックを取得する成長段階と見なされます。次のフェーズは、トランザクションにロックがリリースされている縮小フェーズと見なされます。このタイプのロックには問題があります。トランザクションが中止された場合、他のトランザクションは、中止されたトランザクションによって変更およびロック解除されたオブジェクトからのデータを使用する場合があります。これにより、他のトランザクションが中止されます。