トランザクションについて、トランザクション分離レベルとダーティリード、反復不能読み取り、ファントム読んで理解します

トランザクションとは何ですか?

  サービスデータベーストランザクション。これは、データベース管理システムの実行の論理的な単位であり、データベース操作の有限のシーケンスの構成

  一般的には、取引の適切な実行は、ある状態から別の状態にデータベースを作成します

トランザクションの特性(ACIDの原則)

  •  原子性(アトミック)は、トランザクションのいずれか、すべての実行中または実行されていない全体の不可分です。
  •  ある状態から別の状態にトランザクションデータベースの正しい変換が正しくなるように一貫性(整合性)を実行します。
  •  絶縁(アイソレーション)が正しくトランザクションの前に提出され、トランザクションは、他の業務に利用可能なデータに変更することはできません。
  •  持続性(耐久性)トランザクションが正しい提出した後、結果は常にデータベースに保存されます。

 

同時トランザクションの問題は状態が生成されます

  並行状態は、トランザクションAとトランザクションBは、同じリソース上で操作するときのように、あなたは多くの問題が発生する可能性があります解釈しました。

汚れた(のためのコミットされていないデータ)を読みます。

  そのトランザクションA Bは、データトランザクションが提出されていないお読みください。A Aがコミットしていない更新トランザクションを表示するには、この時間をトランザクションデータが更新されましたが、トランザクションAがコミットしませんが、トランザクションB場合。トランザクションAがロールバックされた場合には、単にデータトランザクションBが汚れて確認してください。それは読み込み汚れています。

  例:

  億をB、それにターンはまだA、Bは、この時点で1億人以上が自分のアカウントをチェックし提出していません。間違ったターンとは、男を発見したものをロールバック。その後、B 100がなくなってWAN。このプロセスでは、コミットされていないダーティ・リードあるBデータ(追加百万)に見出さ。

非反復可能読み取り(2回読まれるトランザクションでデータの矛盾は、変更操作のためのデータを読み出します)

  同じデータ上のトランザクションの実行中にその同じトランザクションは、何度もリードされたが、データの結果が読み込まれるたびに同じではありません。その理由は、間隔で二回読み込まれ、データは二回統一トランザクションで、その結果、他の人を変更し、一貫性のない結果を読んでいません。

  例:

  チェック銀行の残高1,000,000は、Bは、この時間は、その後、バランスは再び50万チェック残高となり、離れて500 000を取った5000万になります。一貫性のない結果が二度という点でAの読み取りを繰り返していません。

マジック読書(データは追加および削除操作のための単一のトランザクションの操作で動作するように発見されていません)

  プロセス即ちトランザクションデータセットが新しい操作または削除操作のために、取引データBを複数回読み取り、複数その結果、データの読み出しトランザクションが矛盾して設定します。

  例:

  提出は、彼がA面で、変更された情報のスタッフが見つかりませんでした。この時間は幻覚のようなものであるとき、現在の従業員情報のすべての時間の変更は、Bは、新しい従業員を挿入します。

 

トランザクション分離レベル

  上記並行処理下で生じる問題に応答して、トランザクション分離レベルが生成されます。トランザクション分離レベルが高い時には、上記の問題は少なくなりますが、パフォーマンスはより大きな消費されます。したがって、実際の製造工程において、必要に応じて分離レベルを決定します。

4つの分離レベル

READ_UNCOMMITTED

  非コミット読み取り、このレベルは分離機構ダーティで解決できないことは明らかであるように、すなわち、データを読み取ることができるが、提出されていないが、ファントムのいずれかに読み取り、非反復可能読み取りを読み出します。

READ_COMMITED

  ダーティリードを防止することが可能であるが、非反復可能読み取りの問題を解決し、ファントムを読み取ることができない、提出されたデータを読み取ることができ、提出されました。

REPEATABLE_READ

  データの後にロックを読み出すことを繰り返し読む、に似ては、「XXXからの更新のための*を選択」、明確なデータが読み出さので、他の人がそれを変更防ぐためにロックを追加するために、アップデートを使用することです。REPEATABLE_READ意味は、データの読み出しが、これは、これはダーティリード、非反復可能読み取りの問題を解決するだろう、他のトランザクションがこのレコードを変更することはできませんトランザクションの終わりではない、似ていますが、ファントムは、問題が解決されていないお読みください。

SERLALIZABLE

  シリアライゼーション、最高のトランザクション分離レベル、どんなに多くのトランザクション、一度の実行ずつすべてのサブトランザクションのトランザクションの完了にあなたが別のトランザクション内のすべてのサブトランザクションを実行する前に、これはダーティリード、反復不能読み取りとファントム読み取りを解決するだろう問題。

おすすめ

転載: www.cnblogs.com/jyroy/p/11106609.html