MySQL Undoログ


Thresh
Undo:取り消しまたは取り消しを意味し、取り消し操作を目的として、ある状態を指定した操作を返します.
Undo Log
データベース・トランザクションが開始される前に、変更するレコードはUndoログに保存されます.トランザクションがロールバックされたり、データベースがクラッシュしたりした場合、Undoログを使用して、コミットされていないトランザクションがデータベースに与える影響を取り消すことができます.
Undo Logは、トランザクションが開始される前に生成され、破棄されます.トランザクションはコミット時にundo logをすぐに削除するわけではありません.innodbはトランザクションに対応するundo logを削除リストに入れ、バックグラウンドスレッドpurge threadで回収処理を行います.Undo Logは論理ログに属し、変化プロセスを記録します.たとえばdeleteを実行すると、undologはinsertを記録します.updateを実行すると、undologは反対のupdateを記録します.
Undo Logは、Undologを格納し、セグメント化して管理および記録する.innodbデータファイルにはrollback segmentロールバックセグメントが含まれ、内部には1024個のundo log segmentが含まれています.次のパラメータのセットでUndologストレージを制御できます.
show variables like '%innodb_undo%'; 

Undo Log作用
トランザクションを実現する原子性Undo Logはトランザクションの原子性を実現するために現れた産物である.トランザクション中にエラーが発生したり、ユーザーがROLLBACK文を実行したりした場合、MySQLはUndo Logのバックアップを使用してトランザクションの開始前の状態にデータを復元できます.
マルチバージョン同時制御(MVCC)Undo Logを実装MySQL InnoDBストレージエンジンでマルチバージョン同時制御を実現します.トランザクションがコミットされない前に、Undo Logはコミットされていない前のバージョンのデータを保存し、Undo Logのデータはデータの古いバージョンのスナップショットとして他の同時トランザクションのスナップショット読み取りに使用できます.
  A      ,      ,               Undo Buffer 。
  B      ,      ,    Undo       ,