第 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 内部文件。
复盘时请附上版本、隔离级别、执行计划或恢复位置中的相关证据;没有证据的“看起来正确”不算完成。