MySQLデータベースのトランザクションMVCC

InnoDBはちょうどMVCCは非ブロッキングのみ読み込み提供名を借りました。
https://m.imooc.com/article/17290
1.シンプルなロックはコミット読み取りを実現する方法ですか?

この分離レベルの効果最低料金:トランザクションが唯一の他のコミットされたトランザクションのレコードを読み取ることができます。
データベース・トランザクション分離レベルの実装では、InnoDBが行レベルのロックをサポートし、加えて、他のトランザクションが選択操作以外の別のトランザクションの更新を(アクセスする書き込み行レベル排他ロック(Xロック)は、他のオペレーティング性質に対する書き込み動作であります)同じレコードの間に、トランザクションはブロックされます読んで。トランザクションがコミットされたときに(実際には、インデックスのロック)レコードは、つまり、排他ロックの解除後にアクセスできるようになるまで、私たちは待つことができます。これは本当にCOMMITED分離レベルの結果を読み取る達成することができます。
データベースは、実際には、他のコミットされたトランザクションのレコードを読み取ることができ、取引の効果を得ることができそうにするが、これは非常に非効率的なアプローチ、そしてなぜですか?ほとんどのアプリケーションでは、読み出し動作が書き込み動作、書き込みロックよりも大きいため、これは、データベースを格納するための能力によって対応するアプリケーションにつながる、操作がブロックされているお読みください。

2.のように見える現実の状況を証明?

次のように見て:
トランザクション分離レベルの読み取りがコミットして、1.クライアントインスタンス2、そして各開いているトランザクション。

分離レベルの読取りトランザクションSETコミット;
SET自動コミット= 0;
開始;
2.更新操作を行うには、クライアント1:

更新テスト・セット名ID = 32 =「テスト」;
結果を以下に示す:
スクリーンショット

3.クライアント2は、クエリを実行します。

ID = 32試験から名前を選択し ;
:結果を以下に示す
スクリーンショット

次に、クライアント1 upate記録され、クライアント2も読み、および変更されていないデータを読み取る非ブロック、見積もりについて質問があります。
MVCC機構の内部使用が大幅同時読み取りの効率を向上させ、非ブロック読み取り一貫性を達成し、書く、書くためには、読みに影響を与え、そのレコードの何かミラーリングバージョンを読んでいないので、それは、InnoDBの二次は良いプレーをしたのです。

おすすめ

転載: blog.csdn.net/sinat_36748650/article/details/92083061
おすすめ