データベース - トランザクション分離レベル

UNCOMMITED-READ(非コミット読み取り)

トランザクションがコミットされていないデータトランザクションBを読み取ることができ、及びダーティ・リードを持つことになり、このトランザクション分離レベルが発生ダーティ非反復リード、ファントム読み出し、読み出します

READ-コミット(コミット読みます)

トランザクションは、すでに操作の前に提出されたデータを参照して、トランザクションを提出することができ、他のトランザクションからは見えません。

このレベルが表示されることがあります反復不能読み取りトランザクション最初のリードCが、トランザクションにBがCを変更し、Aは、同じ元とないで読んトランザクションを提出トランザクションを提出する前に、反復可能読み取り結果は同じではありませんまた、発生する可能性がありファントム読み取り

REPEATABLE READ(反復可能読み取り)

同じレコードの結果を読むために同じトランザクションを複数回には、MySQLのデフォルトの分離レベルと同じです。

可能なファントム読み取りトランザクションAがトランザクションBの範囲内のレコードを読み取り、読み取りが魔法のラインが登場再度とき、この範囲に新しいレコードを挿入するなど、。

ファントムの解決にMySQLのInnoDBのとXtraDBではMVCCで読み込みます。

SERIALIZABEL(直列化可能)

以前のすべての問題を回避するために強制的に取引シリアル実行、タイムアウトやロック競合の問題の多くにつながる可能性があります。

MVCC(マルチバージョン同時実行制御)

InnoDBのがして、各ラインの後に保存されている2つの隠し列を達成するために、それが保存されたタイムラインと有効期限を作成するために、新しいトランザクションの開始は、バージョン番号をインクリメントします、ではない、随時バージョンにシステムを保存します。

繰り返し可能でMVCCをお読みください。

SELECT:

1)InnoDBは唯一のあなたは取引がスタートラインがすでに存在して読み込む前にトランザクションを確保する、のいずれか自分の業務を挿入できるように、システムのバージョン番号は、以下のライン取引システムのバージョン番号に等しい行の現在のトランザクションのバージョン、より前である見つけるためにまたは変更されました。

2)ラインのバージョン番号は、トランザクションの開始が削除されていない前に、大規模なトランザクションが行を読むことを確実にするために、未定義またはトランザクションのバージョン番号よりも大きいのいずれかである、削除します。

インサート:

新たに挿入された行の1)のInnoDBビットは、行バージョンなどの現在のシステム・バージョン番号を保存します。

DELETE:

1)キャンセルマークとして現在のバージョン番号を保存

更新:

1)、新たなレコードの行を挿入し、新しい行バージョンの現在のシステム・バージョン番号を保存、削除のために保存するInnoDBは、元のラインの現在のバージョン番号を識別する。

 

MVCCは次の二つの分離レベル反復可能読み取りで仕事を提出してください。

おすすめ

転載: www.cnblogs.com/KuroNJQ/p/11331021.html
おすすめ