Cassandra 压缩中的直接 I/O:将 p99 读取延迟降低 5 倍
本文探讨了在 Apache Cassandra 的压缩操作中采用直接 I/O(Direct I/O)来替代传统缓冲 I/O 的方法。通过避免操作系统页面缓存带来的额外开销,直接 I/O 能显著减少压缩对读取延迟的影响。实验数据显示,该方法可将 p99 读取延迟降低多达 5 倍,同时减少内存压力,从而提升整体数据库性能与资源利用效率。
背景速读
- **Apache Cassandra** 是一个开源的分布式 NoSQL 数据库,以高可用性和可扩展性著称,常用于处理大规模数据。其核心机制之一是 **压缩(compaction)**——后台定期合并和清理数据文件以提升读取效率,但这个操作本身会大量消耗磁盘 I/O,拖慢正常查询。
- **p99 读延迟(p99 read latency)** 是数据库性能的关键指标,指 99% 的读请求能在多长时间内完成。p99 降低 5 倍意味着几乎所有的读请求都大幅提速,用户体验显著改善。
- **Direct I/O(直接 I/O)** 是一种绕过操作系统页面缓存、让数据直接在磁盘和应用程序间传输的机制。传统压缩依赖缓存,会与用户查询争抢内存和 I/O 资源;使用 Direct I/O 后,压缩操作的磁盘访问不再污染或争用缓存,从而减少对正常读取的干扰。
- 本文介绍的方案通过在 Cassandra 的压缩流程中引入 Direct I/O,显著降低了压缩对前台查询的性能影响,实现了 p99 读延迟 5 倍的提升。