原則のMySQLのMVCC理解

      MVCCマルチバージョン管理:改善するために、同時技術を指します。同時実行の間の最初のデータベース・システムは、読み取り、書き込み、読み取り、書き込み、書き込みブロックされるべきであることができます。マルチバージョンの導入後、唯一の大幅のInnoDBの並行性を向上させる書き込みとの間の相互ブロッキング、並列に他の3つの動作を有します。内部的には、異なる行上のマルチバージョンでPostgresは、InnoDBがundologに実装されている、あなたはundologを介してデータの履歴バージョンを取得することができます。データの履歴バージョンを読み取るためにユーザに提供することができる検索(分離レベルで定義された、読み取り要求の一部は、データのみの古いバージョンを見ることができます)、あなたはまた、ロールバック時のデータ・ページ上のデータを上書きすることができます。内部のInnoDBでは、レコードが読み込まれ、取引主に可視性判定トランザクションを使用しているグローバルアクティブアレイを、書きされます。
      ほとんどのMySQLのトランザクションストレージエンジンがないシンプルな行レベルロックを実現しています。同時パフォーマンスを考慮して持ち上げるに基づいて、彼らはマルチバージョン同時実行制御(MVCC)を達成すると同時に、一般的です。オラクル、PostgreSQLと他のデータベースシステムを含むだけでなく、MySQLは、MVCCを達成しているが、MVCCは、統一基準を持っていないため、その実装メカニズムは、同じではありません。多くの場合MVCCロック動作を回避するため、低コストされています。MVCCのほとんどは、必要な行をロック非ブロック読み取りおよび書き込み操作を達成しています。
     達成するために、ある時点でのデータのスナップショットを保存することにより、MVCCの実現、。言い換えれば、あなたは各トランザクションを実行する必要がどのくらいに関係なく、データが一貫して見ています。トランザクションの時間に応じて、同じテーブル上の各事は、データが同じではないかもしれない、同じ時間を参照してください、始めました。異なるストレージエンジンのMVCC実装は、典型的には楽観的(楽観)とペシミスティック並行性制御(悲観的)並行性制御、異なっています。

     MVCCは2つだけREPEATABLE READで作業し、COMMITTED分離レベルをREAD。READ UNCOMMITTEDは常にむしろ行の現在のトランザクションのバージョンに沿ってよりも、最新のデータラインを読み取るが、SERIALIZABLEがロックされ、すべての行を読み取りますので、他の2つは、分離レベルとMVCCと互換性がありません。

    MVCCの長所と短所:

    MVCCの目標は非ブロッキング読み込み達成するために高いデータベースの同時処理能力を追求することです。

    しかし、これら二つの追加システムのバージョンそのデザインは、データ読み出し動作は、非常に良好なパフォーマンスは非常にシンプルで、かつ唯一の標準ラインの遵守を確保するために読み取ることができ、不足しますので数、ほとんどが読み取り操作が、ロックすることはできませんを保存すべての行は、追加のストレージスペースを必要とする仕事のより多くのチェックラインだけでなく、いくつかの追加の保守作業を行う必要があります配置します。

 

おすすめ

転載: www.cnblogs.com/xuzhujack/p/11009033.html