何同時トランザクションの問題をもたらしました

典型的なアプリケーションでは、複数のトランザクションを同時に実行、多くの場合、(複数のユーザーが統一されたデータを操作するために)自分のタスクを完了するために同じデータで動作します。同時必要なものの、しかし、次のような問題を引き起こす可能性があります:

ダーティリード(ダーティー読み取り)

トランザクションがデータにアクセスされ、データが変更されており、この変更はデータベースに提出されていない場合は、その後、別のトランザクションにもこのデータにアクセスし、このデータを使用しています。このデータが提出されていないので、その後、別のトランザクションは、このデータは、あなたが間違っている可能性があり、「ダーティデータ」をやったことをもとに、「ダーティデータ」、でお読みください。

ロスト(修正するために失われた)を変更

トランザクションがデータ読み出しを意味した後、別のトランザクションが最初のトランザクション内のデータを変更、データにアクセスすることができ、第2のトランザクションは、このデータを変更することができます。そのような修飾は、トランザクション最初のものをもたらす、修飾と呼ばれる程度の損失を失っています。例:トランザクション1は、データテーブルA = 20、A =もリードトランザクション2 20、改変トランザクションA = A-1、Aがトランザクション2 = A-1、A =最終結果19、トランザクションを変更する読み出し改正1が失われます。

非反復可能読み取り(Unrepeatableread)

これは、同じデータを複数回読んで取引を指します。この取引が終わっていない場合は、他のトランザクションは、データにアクセスします。だから、最初のトランザクションデータにつながった2番目のトランザクションの変更に伴う最初のトランザクションに2つの読み出しデータ、の間で二度読んでいないと同じことができます。これは、データがそれほど非反復可能読み取りと呼ばれ、同じような状況ではありません読みトランザクション以内に2回起きました。

マジック読書(ファントムリード)

マジックリーディングとまたとないは等を読み出し。別の同時トランザクション(T2)はデータの一部に挿入され、続いて、データの複数の行を読み取られるトランザクション(T1)で起こります。次のクエリでは、最初のトランザクション(T1)は、いわゆるファントム読み取り、いくつかのオリジナルのレコードが同じ起こった幻覚かのように、存在しない以上あります。

非再現性と区別ファントムを読みます:

非反復可能読み取りのフォーカスが変更され、新たな焦点は、ファントム読み取りまたは削除です。

例1

(同じ条件は、あなたがデータを読み取るために持っていた、再び読み出された値が同じではありません発見):1000年の読み出し動作のための彼らの賃金の問題における1 Aさんがまだ完了していない、B氏2は、トランザクションの改正についてリードaは2000年の給与に彼らの賃金を読んだときの給料は2000年であり、これは非反復可能読み取りです。

例2

(同じ条件、第一の読み出しとレコードの第二数は同じではありません):給与計算テーブルよりも給与大きい3000 4人を、トランザクション1は、すべての人々が3000以上を支払う読み込み、および4が見つかりましたレコードは、トランザクション2を記録する取引記録に見られる3000より給与大きいが、再度読み取られる挿入されたときにこのようにファントムリードにつながる5の1となります。

おすすめ

転載: www.cnblogs.com/kristse/p/ConcurrentTransactions.html