Waiting for Postgres 18: Accelerating Disk Reads with Asynchronous I/O
a year ago
- #Performance
- #Postgres
- #Cloud
- Postgres 18 引入了针对读取操作的异步I/O(AIO),这一重大架构变革旨在提升性能,尤其在云环境中效果显著。
- 异步I/O允许Postgres并发发起多个读取请求,通过无需等待每次读取完成即可继续执行来降低延迟。
- Postgres 18 新增了`io_method`配置参数,提供三种模式:`sync`(传统同步I/O)、`worker`(使用专用I/O工作线程)和`io_uring`(Linux专属的高性能I/O接口)。
- AWS基准测试表明异步I/O可使读取性能翻倍,其中`io_uring`通过减少系统调用开销表现最佳。
- 在Postgres 18中,`effective_io_concurrency`参数影响力增强,可直接控制使用异步I/O方法时的预读请求数量。
- 新增的监控工具如`pg_aios`视图可追踪进行中的I/O操作,这对传统监控可能遗漏部分活动的异步I/O场景尤为重要。
- 异步I/O改变了`EXPLAIN ANALYZE`中的I/O耗时报告方式,可能导致I/O工作量统计偏低,需要调整性能分析策略。
- 未来Postgres版本可能将异步I/O扩展至写入操作,进一步优化现代工作负载的性能表现。