Skip to content

第 10 站练习答案 ​

← 本站索引

提交与落盘 ​

sql
START TRANSACTION;
UPDATE sales_order
SET version_no = version_no + 1
WHERE order_id = 1;
COMMIT;

SHOW GLOBAL STATUS LIKE 'Innodb_os_log_written';

提交路径应描述 undo/数据页修改、redo、binlog 与协调提交;checkpoint 路径负责将脏页推进到表空间。崩溃后 InnoDB 利用持久 redo 恢复未落盘页变化。

时间窗口采样 ​

sql
SHOW GLOBAL STATUS WHERE Variable_name IN (
  'Innodb_log_waits',
  'Innodb_os_log_written',
  'Uptime'
);

间隔固定时间再次采样,用差值除以时间和业务吞吐。一次非零累计值不能证明当前仍有 redo 容量瓶颈。

加码题解:持久化与恢复 ​

sql
SHOW GLOBAL STATUS LIKE 'Innodb_os_log_written';
SHOW GLOBAL STATUS LIKE 'Innodb_log_waits';

关键推理 ​

redo 写入与等待应按时间窗口采样,并和提交延迟、磁盘 fsync 关联。

可替代方案 ​

通过备份恢复演练验证真实 RPO/RTO,而不是只读配置值。

典型错误 ​

把 COMMIT 返回等同于数据页已写回,或在生产手工删除 InnoDB 内部文件。

复盘时请附上版本、隔离级别、执行计划或恢复位置中的相关证据;没有证据的“看起来正确”不算完成。

用心记录每一步成长