mysql ビデオ チュートリアル コラムでは InnoDB の学習内容を紹介します
推奨 (無料): mysql ビデオ チュートリアル
物事の基本概念
物事の特性 (ACID) )
原子性
一貫性
分離
耐久性
##物の種類
redo と undo redo redo: 物事のアトミック性と永続性、物理的なログを確保します。基本的にはシーケンシャル書き込みです。
undo: 物事の一貫性を確保します。論理ログ。元に戻すとやり直しが生成され、ロールバックや mvcc、ランダムな読み取りと書き込みに使用されます。
redo
redo ログ バッファredo ログ ファイル
コミット時にログを強制して永続性を実現するメカニズム
0: マスター スレッドディスクへの書き込みが完了します
1: デフォルトでは、トランザクションの送信ごとに fsync が必要です2: ファイル システム キャッシュに書き込みますが、fsync は実行されません
ログ ブロック
512 バイトはディスク マウンテンのサイズと一致しており、ログの書き込みはアトミックであり、二重書き込みは必要ありません。テクノロジー
## は 512 - 12 -8 = 492 に分割されますREDO ログヘッダー: 12 バイト REDO ログ内容:
REDO ログ末尾: 8 バイト
LOG_BLOCK_HAR_NO [4 バイト]: ログ バッファー内のログ ブロックの位置
LOG_BLOCK_HAR_DATA_LEN [2 バイト]: ログ ブロックが占めるサイズ
LOG_BLOCK_FIRST_REC_GROUP [2 バイト]: いいえ。ログのオフセット
ログ グループ
複数の REDO ログ ファイルが構成されます
REDO ログ ファイル
REDO ログ形式
redo_log_type: REDO ログのタイプ
space: 表スペースの ID page_no:ページ オフセット
LSN (ログ シーケンス番号)
8 バイト、単調増加 意味: Redo ログ書き込みの合計量
チェックポイントの場所ページ バージョン
元に戻す
元に戻すセグメント: スペース内の共有テーブル (128)ロールバック セグメント > (1024) アンドゥ セグメント、処理の同時実行は 128*1024
アンドゥ ログ形式アンドゥ ログの挿入アンドゥ ログの更新
物事の分離レベル
READ UNCOMMIT: クエリ ステートメントを使用するとロックされず、コミットされていない行が読み取られる可能性があります (ダーティ リード)
READ COMMIT: レコードのみ レコード間にギャップ ロックを追加せずにレコード ロックを追加するため、新しいレコードが許可されますEPEATABLE READ : 同じ範囲のデータを複数回読み取ると、最初のクエリのスナップショットが返されます。データ行は返されませんが、ファントム読み取り (ファントム読み取り) が発生する可能性があります;SERIALIZABLE: InnoDB はすべてのクエリ ステートメントを暗黙的に置き換えます 共有ロックを追加すると、ファントム読み取りの問題が解決されます; ダーティ読み取り: 1 つのトランザクション内、他のトランザクションのコミットされていないデータが読み取られます
反復不可能な読み取り: 1 つのトランザクションで、同じ行が記録されます 2 回アクセスされ、異なる結果が得られました。ファントム読み取り: トランザクションで、同じ範囲のレコードが読み取られると、他のトランザクションがこの範囲に新しいレコードを追加します。
反復不可能な読み取りの理由は、READ COMMITED の分離レベルでは、ストレージ エンジンがレコードのクエリ時に行ロックを追加せず、id = 3 のレコードをロックしないためです。
分散モノ
XA
リソース マネージャー: トランザクション リソースにアクセスするメソッドを提供しますトランザクション マネージャー: グローバル モノに参加するさまざまな関係者を調整します。 アプリケーション プログラム: グローバルなものの定義や操作の指定に便利です
以上がMysql-InnoDB トランザクション学習の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。