ステップ4 MVCC MVCCの原則、トランザクションのACID、物事の分離レベル、InnoDBストレージエンジンは何がMVCCを達成する方法であります

MVCCは、並行性の問題に対処同時アクセスの効率を向上させることにある、書き込みをブロックせずに読み込みます。
物事
の原子
C一貫
I分離
D持続的
高同時シーンの問題
ダーティリード
またとない読み取り
、ファントムが読む
ものの分離レベル
RU READ UNCOMMITTEDダーティリード/またとない読み取り/ファントムをお読みください。NA MVCCは、あなたが変更またはでもコミットされていないから、他のどのような取引を読むことができ、読み。
RCリードコミッティまたとない読み取り/ファントム読み取り。限り、その結果はMVCCを読むことが目に見える、と最初に無関係なこれら二つの問題のため、完全には適用されない変更するために提出されているように、データベースに他のトランザクションを変更します。
RR反復可能読み取りファントムをお読みください。MVCCに完全に適用、唯一のそれはすでに、提出を開始する前に、データベースにトランザクションを変更読むことができる
他のすべてのトランザクションは、そのデータベースの条項を修正するために目に見える、それが始まった後ではありません。
Sシリアル化/。クエリのすべてがロックされるように完全に不向き適用MVCCは、それはトランザクションの後に待機しなければなりません。
OracleのPostgreSQLのデフォルトRC
のMySQLのInnoDB RRのデフォルト
MVCCの方法のInnoDB実現:マルチバージョン同時実行制御
方法はInnoDBを達成するために、各行のための3つの追加の隠しフィールドを保存するMVCC、です。
その値は自動的に+1され、各トランザクション、特定の1.DB_TRX_IDの6byteプロセス
作成時刻「と」時間を削除「が値DB_TRX_IDレコードである
ようなINSERT、UPDATEなどの、ビット削除操作として表現
2.DB_ROLL_PTR:サイズは7byte、アンドゥログレコードの書き込まれたロールバック・セグメント(ロールバック)を指している
(記録行の更新前に、値の更新動作)
3.DB_ROW_ID:サイズ6byte、値が増加する単調新たに挿入された行増加した蓄積際のInnoDBインデックスによって自動的にクラスタ化インデックス(すなわちない主キー、MYSQLのデフォルトはクラスタ化されているため、テーブルには、自動的にROWID生成)
、削除された行を作成するための時間は、各イベントの時間に発生したときに記録されDB_TRX_IDを各タイムラインストアのバージョン番号ではなく、実際のイベントを格納します。毎回の事が、このバージョンは増加します開始します。記録された時間の初め以来、システムは、物事の各バージョンの記録を保持します。
。新しい、挿入で動作し、「作成時間」= DB_TRX_IDは、この時点では、「時間を削除」未定義である;
。更新中のBの変化、= DB_TRX_ID「作成時間」の新ラインコピー、時間を削除未定義、古いデータ・ロー「作成時間」定数、時間= DB_TRX_IDトランザクションを削除し、
C、削除、操作を削除し、;.トランザクションの= DB_ROW_ID時間を削除し、同じの行に対応する「時間を作る」
。Dクエリを、両方の操作のために選択、変更、対応するデータを読んでいない;
SELECT
InnoDBはデータの各行をチェックし、彼らは2つの基準を満たしていることを確認する:
1.InnoDBは、以前の行の現在のトランザクションのバージョンよりもバージョンを見つける(つまり、データ行のバージョンでありますトランザクションが保証、またはラインは、トランザクションが既に存在している現在のトランザクションによって読み取られる前に、現在のトランザクションによって作成または変更されたラインである)以下のバージョンでなければなりません。
2.特定の行の削除のバージョンは、未定義または現在のトランザクションのバージョン番号よりも大きいです。現在のトランザクションを開始する前に決定し、ラインは、クエリの結果が返される上記二点に沿って削除されません。
INSERT
現在のシステム・バージョン番号をIDとして作成された各新しいレコードのためのInnoDB行。
DELETE
IDラインとして現在のシステム・バージョン番号を削除するためのInnoDBレコードをそれぞれ削除された行を。
UPDATE
InnoDBは行をコピーします。この新しい行バージョンがシステムのバージョン番号を使用しています。また、行の削除バージョンなどのシステムのバージョン番号です。

おすすめ

転載: www.cnblogs.com/dbalightyear/p/11286418.html