关键日志为何总在崩溃时消失:从内存缓冲到持久化存储的四十年技术博弈

凌晨两点,生产环境的告警响起。一个内存溢出导致的服务崩溃。你打开日志系统,准备分析崩溃前发生了什么——却发现最后一条日志记录于崩溃前47秒。那47秒里发生了什么?没有记录。日志系统本身成了事故的受害者。 ...

11 min · 5171 words

Write-Ahead Log:数据库如何在断电瞬间守住数据最后一道防线

1992年3月,ACM Transactions on Database Systems发表了一篇题为《ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging》的论文。这篇由IBM Almaden研究中心的C. Mohan等人撰写的文章,定义了此后三十余年数据库崩溃恢复的基本范式。 ...

13 min · 6282 words

fsync()不是你想的那样:数据库持久化的致命误解

2018年3月,PostgreSQL开发者Craig Ringer在邮件列表中披露了一个令人震惊的发现:PostgreSQL对fsync()错误处理不当可能导致数据损坏。这个后来被称为"fsyncgate"的事件揭示了一个更深层的问题——许多开发者对fsync()的语义存在根本性误解。 ...

9 min · 4024 words