sicutdeux@blog:~/links$cat postgres-17-streaming-i-o-for-sequential-scans-and-analyze.md
Postgres 17: Streaming I/O for sequential scans and ANALYZE
---
source_url:
source_name:
pganalyze.com
published:
2026-06-01
status:
published
---
In Postgres 17 we do not yet have asynchronous I/O, but we do see a performance benefit from what is essentially a refactoring work around the internal APIs. The streaming and vectored I/O work systematically issues POSIX_FADV_WILLNEED for random access and builds larger vectored I/Os; eg one preadv() call can replace 16 pread() calls.
solid groundwork for eventual async I/O in postgres. the key insight here is that refactoring internal read APIs to handle multiple buffers at once yields immediate wins—10% faster ANALYZE, better sequential scan throughput—while setting up the plumbing for actual async I/O down the road. this is pragmatic infrastructure work: smaller syscalls were a bottleneck on certain filesystems, so batching reads and prefetch hints cost relatively little but pay dividends now. typical munro/freund approach: boring but foundational. worth tracking if you’re running large sequential workloads.