原因: InnoDB 將自增計數器保存在內存中,不持久化到磁碟。計數器特性:
INSERT 遞增,DELETE/ROLLBACK 不遞減。SELECT MAX(id) FROM table FOR UPDATE 重新載入最大值到計數器。結論: 自增值不連續是正常現象,業務邏輯不應依賴連續性。
Redo Log(重做日誌)— 物理層面:
Undo Log(回滾日誌)— 邏輯層面:
INSERT 對應 DELETE,UPDATE 對應反向 UPDATEmaster thread 定期 purge| 特性 | Redo Log | Undo Log |
|---|---|---|
| 層級 | 物理(頁級) | 邏輯(行級反操作) |
| 用途 | 崩潰恢復、持久化保證 | 事務回滾、MVCC 版本鏈 |
| 空間回收 | 循環寫入,覆蓋 | 需 Purge 線程清理 |
| 持久化時機 | Commit 前 fsync | 不強制 fsync,靠 Checkpoint |
TRUNCATE TABLE 或 ALTER TABLE t AUTO_INCREMENT = 1(需無資料)。