取引の特性に関連MYSQL

別のトランザクションが同時に読み取り操作と書き込みすると、次があるかもしれません。

書き込み汚い、ダーティリード、反復不能読み取り、ファントム読み取り

 

それらの間の読み取り操作結果の安いものから高いものへの影響。

 

テーブルにデータを書き込み、成功した最終的なデータを提出しているが、実際には、テーブルの現象に存在していないトランザクションの後にオープン - 1、書き込み汚れは、を指します。これが呼び出されるようホワイトは、このデータかのように書いた「ダーティ書き込み。」

シナリオの例:

(夜12時の呼び出し当分の間)2つのトランザクションAとBが一度にあると仮定一緒に開かれた、彼らは(一時的に想定し、銀行口座)用のテーブルしようとしているデビット書き込みました。

夜12時00分、預金口座番号は100です。それは(預金が100であるので、その動作は正当なものである)、トランザクションB 70を控除したい、Aが50を望んで取引を控除し、2つのトランザクションで開かれました。

しかし、最初の預金は50を占めるAがコミットトランザクション、充電後のフォローアップ作業を行うには継続するトランザクションAスレッドが、今回の取引を何らかの理由でトランザクションBを遅らせ、および50のトランザクションA控除Bは実行されませんでした。

次に、トランザクションBは最終的に70ドルの口座ネットを操作し始めているが、この定期預金は、トランザクションのロールバックが得られ、70を控除するには不十分でした。夜12時預金は戻って100に、バックします。

しかし、単にトランザクションが提出され、かつ成功してきた著者が正常に他のいくつかのことを行うことを許可されているので、それであってもよいです。これは、成功したトランザクションA控除(実際には控除されていない)50をもたらしました。

これは、白書き込みを書くこと、汚い書き込みです。

 

図2は、ダーティリード、データを読み取ることで、これはと呼ばれ、存在しない「ダーティリード。」

シナリオの例:

あるいは、上記の例では、午前0時00分には、預金口座番号は100です。このアカウントの富豪の所有者かどうかを確認するための仮説総務。トランザクションBは、誰かの送金、このアカウントに100万です。

しかし、いくつかの理由で、トランザクションはAは、Bが預金が100千100を占め、この時点でトランザクションを実行するために遅れているが、トランザクションBを提出していませんでした

その後に続く、最終的にはトランザクションAの預金口座の残高を照会し始め、100千100であることが判明し、実際に億万長者である、彼はトランザクションを提出した場合、トランザクションAは、その後のフォローアップ操作を行うだろう。

この時点で、部門は、その誤ったトランザクションBを発見し、ロールバックトランザクションに、預金は100に戻って、夜12時00分にバックします。

しかし、単にトランザクションが送信されました、億万長者のアカウント(ない本物の)確認されています。

これは、ダーティリードで、読み取りデータは存在しません。

 

継続するには。

おすすめ

転載: www.cnblogs.com/alvinleung/p/12147615.html