MVCCの原則を達成するために、InnoDBストレージエンジン

シンプルな背景

MySQLの

MySQLは、アプリケーションの機能の信頼性データストレージを提供するために、今最も人気のある選択肢のリレーショナルデータベース(RDB)で、その他の事項。近年では、インターネットは、企業のための最初の選択肢となっています。バージョン5.5では、デフォルトの利用InnoDBストレージエンジン。

MySQLのアーキテクチャ

トップレベルにはアクセス層は権限、スレッドプールの管理、スレッド管理をチェックする責任があり、異なる言語のためのアクセスを実現するために、アクセス層です。次はMySQLのサービス層で、SQLパーサ、SQLの最適化、データ・バッファ・キャッシュがあります。次は、ストレージエンジンです。最後に、ファイルシステム層。

InnoDBテーブルとMVCC

MySQLのInnoDBストレージエンジンでプロパティが、反復可能読み取り、行レベル・ロックのデフォルトレベルはMVCCを達成するためにしている、一貫性非ロックは、(デフォルトの読み取りロック解除、一貫した非ロックリード)を読み込み、挿入バッファ、アダプティブハッシュインデックス 、ダブル・ライト、クラスタのインデックス。
上記InnoDBはすぐに多くの機能を持っており、どのように多くの例を挙げました。
InnoDBはアンドゥログを介してデータの複数のバージョンに実装され、並行性制御をロックすることによって達成されます。
元に戻すログMVCCを達成するに加算するだけでなく、ロールバック機能を提供します。

REDOログ、UNDOログ、ビンログ

MySQLのInnoDBは、エラーログ、クエリログおよび持続に関連する多くのログに加えて、ログをたくさん持っています。
ビンログ一般的にデータ復旧、データベース・レプリケーションに使用するサービス層、によって生成されたMySQLのログを:。そのような共通のマスター・スレーブモードとしてバイナリログすることによって達成されるが、またなどの他のデータソースに追加のバイナリログのMySQLのレプリケーション、達成する:ElasticSearchを。
REDOをログ:ときメモリ内のデータがダーティページ(ダーティページ)と呼ばれ、キャッシュとディスクのデータで一貫性のないデータ、修正するためにデータを記録し、MySQLは、物理レベルでキャッシュに多くを使用しています。データのセキュリティを確保するために、トランザクションは、トランザクションがフラッシュ操作に提出されるREDOログを生成し続け、ディスクへの保存、redoログは、ランダム読み取りおよび書き込み性能よりもはるかに大きいために、書かれています。MySQLの回復は、REDOログ内のデータをロードする場合は、REDOログがコミットされたトランザクションがある場合、そのデータを修正するためにそれを提出します。これは、一貫性、アトミック、トランザクションの耐久性を保証します。
アンドゥログ:REDOログ・レコードに加えて、ログレコードを元に戻すであろう、逆元に戻すような削除操作を変更するなどの操作を記録し、データを、ログ記録データがロールバックとバージョンバックトラッキングのために、変更前の値です。あなたは、このようにMVCCを達成し、アンドゥログに応じた値の特定のバージョンで見つけることができます。
REDOログとビンログが一貫性を達成するために整合するように、MySQLは2フェーズ・コミット・プロトコルを使用しています。

達成するためにMVCC

アンドゥログは2種類の挿入や更新に分割され、削除操作も特別な更新と見られ、記録上のマークが削除されます。
他の事項が存在しないため、挿入操作の場合は、生成された挿入アンドゥログに挿入されたときに、トランザクションがコミットされ、あなたは、アンドゥログを削除することができるアンドゥログインする必要があります。
新しいアンドゥログに新しいアンドゥログ、ポイントdb_roll_ptr現在のレコードを生成するとき、更新操作が行われます。
トランザクションの開始後の最初のスナップショットは、現在アクティブなトランザクションIDが読み取りビューに記録され、RRレベルで記録されるときに読み出します。

リリース6元記事 ウォンの賞賛0 ビュー29

おすすめ

転載: blog.csdn.net/qq_26375325/article/details/105059715