Hasty Briefsbeta

双语

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扩展至写入操作,进一步优化现代工作负载的性能表现。