ホームページ  >  記事  >  データベース  >  Mysql-InnoDB トランザクション学習の概要

Mysql-InnoDB トランザクション学習の概要

coldplay.xixi
coldplay.xixi転載
2021-01-02 09:41:071960ブラウズ

mysql ビデオ チュートリアル コラムでは InnoDB の学習内容を紹介します

Mysql-InnoDB トランザクション学習の概要

推奨 (無料): mysql ビデオ チュートリアル

物事の基本概念

物事の特性 (ACID) )

  • 原子性

  • 一貫性

  • 分離

  • 耐久性

##物の種類

    平らなもの
  • #セーブポイントのあるフラットなもの
  • チェーンなものネストされたトランザクション
  • 分散トランザクション
  • 物事の実装

redo と undo redo redo: 物事のアトミック性と永続性、物理的なログを確保します。基本的にはシーケンシャル書き込みです。

undo: 物事の一貫性を確保します。論理ログ。元に戻すとやり直しが生成され、ロールバックや mvcc、ランダムな読み取りと書き込みに使用されます。



redo

redo ログ バッファredo ログ ファイル

コミット時にログを強制して永続性を実現するメカニズム

REDO ログ バッファ -> ファイル システム キャッシュ -> (fsync) ディスク ファイル

innodb_flush_log_at_trx_commit

0: マスター スレッドディスクへの書き込みが完了します

1: デフォルトでは、トランザクションの送信ごとに fsync が必要です

2: ファイル システム キャッシュに書き込みますが、fsync は実行されません


ログ ブロック

512 バイトはディスク マウンテンのサイズと一致しており、ログの書き込みはアトミックであり、二重書き込みは必要ありません。テクノロジー

## は 512 - 12 -8 = 492 に分割されます

REDO ログヘッダー: 12 バイト Mysql-InnoDB トランザクション学習の概要 REDO ログ内容:

REDO ログ末尾: 8 バイト


LOG_BLOCK_HAR_NO [4 バイト]: ログ バッファー内のログ ブロックの位置
LOG_BLOCK_HAR_DATA_LEN [2 バイト]: ログ ブロックが占めるサイズ
LOG_BLOCK_FIRST_REC_GROUP [2 バイト]: いいえ。ログのオフセット

LOG_BLOCK_CHECKPOINT_NO [4 バイト]: 最後に書き込まれたときのチェックポイントの 4 バイト目の値? ?



ログ グループ

複数の REDO ログ ファイルが構成されます

REDO ログ ファイル

REDO ログ形式Mysql-InnoDB トランザクション学習の概要

redo_log_type: REDO ログのタイプ

space: 表スペースの ID Mysql-InnoDB トランザクション学習の概要page_no:ページ オフセット


LSN (ログ シーケンス番号)

8 バイト、単調増加 意味: Redo ログ書き込みの合計量

チェックポイントの場所

ページ バージョン



元に戻すMysql-InnoDB トランザクション学習の概要

元に戻すセグメント: スペース内の共有テーブル (128)ロールバック セグメント > (1024) アンドゥ セグメント、処理の同時実行は 128*1024

アンドゥ ログ形式

アンドゥ ログの挿入アンドゥ ログの更新


#パージ

Mysql-InnoDB トランザクション学習の概要

##グループコミット

物事の分離レベル

READ UNCOMMIT: クエリ ステートメントを使用するとロックされず、コミットされていない行が読み取られる可能性があります (ダーティ リード)

READ COMMIT: レコードのみ レコード間にギャップ ロックを追加せずにレコード ロックを追加するため、新しいレコードが許可されますEPEATABLE READ : 同じ範囲のデータを複数回読み取ると、最初のクエリのスナップショットが返されます。データ行は返されませんが、ファントム読み取り (ファントム読み取り) が発生する可能性があります;

SERIALIZABLE: InnoDB はすべてのクエリ ステートメントを暗黙的に置き換えます 共有ロックを追加すると、ファントム読み取りの問題が解決されます; ダーティ読み取り: 1 つのトランザクション内、他のトランザクションのコミットされていないデータが読み取られます

反復不可能な読み取り: 1 つのトランザクションで、同じ行が記録されます 2 回アクセスされ、異なる結果が得られました。

ファントム読み取り: トランザクションで、同じ範囲のレコードが読み取られると、他のトランザクションがこの範囲に新しいレコードを追加します。

反復不可能な読み取りの理由は、READ COMMITED の分離レベルでは、ストレージ エンジンがレコードのクエリ時に行ロックを追加せず、id = 3 のレコードをロックしないためです。


分散モノ

XA

リソース マネージャー: トランザクション リソースにアクセスするメソッドを提供しますトランザクション マネージャー: グローバル モノに参加するさまざまな関係者を調整します。 アプリケーション プログラム: グローバルなものの定義や操作の指定に便利です

Mysql-InnoDB トランザクション学習の概要

以上がMysql-InnoDB トランザクション学習の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。