トランザクション分離分析

キーワード:分離、ファントム読み取り、ロックギャップ

 
 
図1に示すように、同時トランザクションの間で互いに干渉し、それらの間の分離を行っています。これは、トランザクションの分離に反映されます。
 
2、トランザクション&&質問の3種類の4つの分離レベル:
(1)は、4つの分離レベルを:コミットされていない、コミット読み取り、反復可能読み取りを読み取り、シリアライズ
(2)三つの問題:ダーティリード、反復不能読み取り、ファントム読み取り

3、比較分析:
(1)&&反復読出しまたとない読み取ります。
  反復可能読み取り:トランザクションを指し、次は、このデータが更新された別のトランザクション、現在のトランザクションを読んだりしても、アップデートに他の業務を読みますが、最初のデータを読み取ることができます最初の読み取りのデータを保持するために、あなたは抽象的思考が同じデータを繰り返すことができます読み取ることができます。この分離レベルの下では、現在のトランザクションがコミットされた後にのみ、追加のトランザクションを提出することを読むことができるようにします。(クラッシュは、この時点で行われました)
 
  非反復可能読み取りは:一度、現在のトランザクションは、データもはや読むことができる前に、このデータを更新する必要があり、この他のトランザクションデータを更新し、繰り返すことはできませんデータの読み出しを指します。同じトランザクションでは、データは二回矛盾読み込まれます。
 
コントラスト:
  ①分離レベル反復可能読み取り、非反復リード現象です。
  ②反復可能読み取りのために:現在のトランザクションがコミットされていないが、他の業務をコミットするために読むことができない、唯一のコミットの最初の読み取りの内容を読み取るために繰り返すことができます。
   非反復可能読み取りの場合:コミットされていない現在のトランザクションが、その他の事項をコミットするために読み取ることができ、他の最新のコミットされたトランザクションの内容を読み取るためにあらゆる時間。
 
(2)反復可能読み取り&&幻读:
 
  異なるデータベース内のデータベースの4つの分離レベルを達成MySQLでは、異なる反復可能読み取り分離レベルを実装する際に、読み取り、ファントムの問題を解決しました。(SQL標準は必要ありませんが、ファントムが解決が、InnoDB内で解決読み込み)
 
どのように読んでファントムを解決するには?
  更新操作のための①、そう何のファントムは読まない、Xロックを追加しますので、他のトランザクションが操作を更新することはできません。
  ②読み出し動作のために、しかし:InnoDBのデフォルトプラスSがロックされていないロックギャップ(ギャップロック)を添加しながら、それは、(読み取りロックに相当)MVCC制御を使用します。
   ( "ロックギャップ"分析:https://www.cnblogs.com/bestvish/p/10518553.html
 
(3)反復可能読み取りとInnoDB内シリアライズさの違い:
  前提条件:2つの同時トランザクションのA、Bがあるとします
  ①RR分離レベル:
    、書き込みトランザクションは、トランザクションBのみ読み取ることができ、Xロックが追加されます。
    B、MVCCによって制御される記録電流を読み出すためのリードトランザクション、プラス現在のレコードギャップロックギャップ(Sロックに相当)。この時点で、トランザクションBは書くことができない、だけで読むことができます。
  ②シリアル化のレベル:それは読み取りまたは書き込みされているかどうか、シリアル化され、トランザクションが読み書きする他の方法ではないときのトランザクションで読み取りまたは書き込み。
 

おすすめ

転載: www.cnblogs.com/axing-articles/p/11366890.html