ホームページ  >  記事  >  データベース  >  データベースの同時操作によってどのような問題が発生する可能性がありますか?

データベースの同時操作によってどのような問題が発生する可能性がありますか?

angryTom
angryTomオリジナル
2019-07-24 15:17:0110785ブラウズ

データベースの同時操作によってどのような問題が発生する可能性がありますか?

推奨チュートリアル: sql チュートリアル

データベース 同時操作

# データベースは、複数のユーザーが使用できる共有リソースです。これらのユーザー プログラムは、1 つずつ連続して実行できます。データベースにアクセスするために一度に実行できるユーザー プログラムは 1 つだけです。他のユーザー プログラムは、データベースにアクセスする前に、このユーザー プログラムが終了するまで待つ必要があります。しかし、ユーザー プログラムに大量のデータの入出力交換が含まれる場合、データベース システムはほとんどの時間アイドル状態になります。したがって、データベースのリソースを最大限に活用し、データベースの共有リソースの特性を活かすには、複数のユーザーがデータベースに並行してアクセスできるようにする必要があります。ただし、これにより、複数のユーザー プログラムが同じデータに同時にアクセスすることになります。同時操作が制御されていない場合、不正なデータがアクセスおよび格納され、データベースの一貫性が破壊される可能性があります。そのため、データベース管理システムは同時実行制御メカニズムを提供する必要があります。 同時実行制御メカニズムの品質は、データベース管理システムのパフォーマンスを測定するための重要な指標の 1 つです。

データベースの同時操作によって引き起こされる問題

(1) 更新の喪失

2 つの場合 いつ1 つ以上のものが同じデータを読み取って変更すると、更新消失の問題が発生します。つまり、後のトランザクションの更新結果が前のトランザクションの更新によって上書きされます。つまり、トランザクション A と B が同時に行われる場合です。トランザクション A がデータを変更しましたが、B は送信する前に同じデータを変更しました (この時点のデータは A がまだ変更を送信していないデータであることに注意してください)。A が行ったデータ変更は失われます

(2) 反復不可能な Read

2 つのデータがあるデータを読み取ると、別のトランザクションがそのデータの更新を実行し、現在のトランザクションがそのデータを再度読み取ります (うまくいけば)最初の読み取りと同じ) (同じ値) の場合、取得されたデータは前回と異なります。これは、最初にデータが読み取られた後、トランザクション B によってデータが変更され、再度読み取られたデータが

と同じ (3) 「ダーティデータ」の読み取り

# トランザクションがあるデータを変更すると、別のトランザクションがそのデータを読み取ります。何らかの理由で、前のトランザクションが変更されたデータの変更をキャンセルし、変更されたデータを元の値に復元したため、後のトランザクションで読み取られたデータが利用可能なデータと矛盾します。これを読み取りと呼びます。ダーティ データ

注: 「

ゴースト データ」と呼ばれるものもあります。ゴースト データはダーティ データに似ていますが、ゴースト データとは、トランザクションがコミットされた後に読み取られたデータを指します。 、前のトランザクションが復元され、ダーティ データ データとは、送信前に読み取られたデータを指します

以上がデータベースの同時操作によってどのような問題が発生する可能性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。