This has benchmark results for Postgres 18.0 using sysbench on a small server. Previous results for 18 rc1 are here.
tl;dr
- From 12.22 to 18.0
- there are no regressions larger than 2% but many improvements larger than 5%. Postgres continues to do a great job at avoiding regressions over time.
- From 17.6 to 18.0
- I continue to see small CPU regressions (1% or 2%) in Postgres 18 for short range queries on low-concurrency workloads. I see it for shorter but not for longer range queries so my guess is that this is new overhead in query execution setup or optimization. I hope to explain this.
For 18.0 I tried 3 configuration files:
- conf.diff.cx10b_c8r32 (x10b) - uses io_method=sync
- conf.diff.cx10c_c8r32 (x10c) - uses io_method=worker
- conf.diff.cx10d_c8r32 (x10d) - uses io_method=io_uring
Benchmark
The read-heavy microbenchmarks run for 600 seconds and the write-heavy for 900 seconds.
The benchmark is run with 1 client, 1 table and 50M rows. The purpose is to search for CPU regressions.
I provide charts below with relative QPS. The relative QPS is the following:
(QPS for some version) / (QPS for base version)
I present results for:
- versions 12 through 18 using 12.22 as the base version
- versions 17.6 and 18.0 using 17.6 as the base version



