TL;DR
Get business pricing on monitors, keyboards and dev gear
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
At POSETTE 2026, Sai Srirampur presented a benchmark comparing PostgreSQL on local NVMe with the same workload on baseline gp3 EBS. Across four clusters per storage type, median throughput was 16,030 transactions per second on NVMe and 1,734 on EBS; the result applies to the tested configuration, not every PostgreSQL workload or storage setup.
At POSETTE 2026, Sai Srirampur presented a benchmark in which PostgreSQL achieved median throughput of 16,030 transactions per second on local NVMe, compared with 1,734 on baseline gp3 EBS, using the same update-heavy workload. The reported 9.24× gap points to storage as a potential performance limit in this particular test, but does not establish that PostgreSQL workloads generally perform that much faster on NVMe.
The benchmark used eight PostgreSQL clusters: four on instance-store NVMe and four on gp3 EBS provisioned at 3,000 IOPS. Each ran on an identical m6id.4xlarge instance with 16 vCPUs, 64 GiB of RAM and 16 GiB of shared_buffers. The workload updated randomly selected rows in a 482 GiB table with 3.3 billion rows, using 64 clients and 16 worker threads for five minutes.
ClickHouse reported a median transaction latency of 4.0 milliseconds on NVMe, compared with 36.9 ms on EBS. In additional tests, a VACUUM operation over 10 GB of bloat took 366 seconds on NVMe and 964 seconds on EBS; draining a 10 GB logical-replication backlog took 139 seconds and 238 seconds, respectively. These are results from the reported test setup, not universal PostgreSQL performance figures.
The report attributes much of the latency difference to storage waits. It says page reads took about 19 ms per transaction on EBS versus 0.3 ms on NVMe, while WAL synchronization at commit took 11 ms versus 1.5 ms. CPU work was about 2 ms on each. A mid-run snapshot also showed 29 of 64 EBS backends waiting on data-file reads, compared with nine of 64 NVMe backends. The report describes this as a single snapshot, not an average across the run.
Storage Can Stall PostgreSQL Workloads
The test illustrates how a storage bottleneck can affect several parts of a database at once. When a working set no longer fits in memory or the operating-system page cache, reads require physical I/O. Queries, WAL writes, checkpoints, VACUUM and logical decoding can then compete for the same storage bandwidth, IOPS and queue capacity. If storage is saturated, delays in one operation can spill into others.
For teams investigating slow ingestion, uneven read latency, maintenance falling behind or replication lag, the findings make storage performance a relevant diagnostic question alongside query plans and CPU use. They do not show that storage is the cause of every such issue, or that replacing storage alone will resolve it. The benchmark’s measured difference is substantial, but its scope is limited to a particular random-update workload and the specific devices and settings tested.
NVMe SSD for high performance PostgreSQL
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
How the Benchmark Isolates Storage
Srirampur’s talk, titled “Postgres Isn’t Slow. Your Storage Is,” examined storage as a possible shared constraint behind several symptoms reported in large PostgreSQL deployments. The presentation discussed slower UPDATE and UPSERT pipelines, unpredictable high-percentile read latency, autovacuum falling behind, longer checkpoints and lag in logical replication. The report says these issues can have different causes; storage is one possible common factor.
To compare storage types, the benchmark ran four clusters per group and used identical compute and database settings. The reported EBS configuration was baseline gp3 at 3,000 IOPS, while the other group used local instance-store NVMe. The report says multiple instances were included to reduce run-to-run variability. That design helps focus the comparison on storage within this setup, but it does not compare every EBS provisioning option, instance type, workload pattern or production environment.
“Postgres Isn’t Slow. Your Storage Is.”
— Sai Srirampur, presenting at POSETTE 2026
Amazon EBS gp3 storage for database
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Results Depend on Workload and Storage
The reported results do not establish how other PostgreSQL workloads would compare. The test focused on random updates to a large table over five minutes; read-heavy, sequential, mixed or less concurrent workloads may produce different outcomes. The EBS group used baseline gp3 provisioned at 3,000 IOPS, and the report says a different EBS configuration would likely yield different results.
The source material also gives an incomplete account of a CPU-profile comparison: it reports 2,253 CPU-seconds for the NVMe host over roughly 240 seconds and 25 CPU-seconds for the EBS host, then cuts off before explaining the observation. The figures are not interpreted here. The supplied material does not provide enough information to assess that profile, broader cost trade-offs, durability considerations, or performance across longer production runs.
As an affiliate, we earn on qualifying purchases.
Further Testing Would Set the Limits
The report presents the benchmark as an investigation of storage performance and closes by discussing production patterns for running PostgreSQL on local NVMe. The available source material does not specify a publication schedule for further benchmarks or provide full details of those proposed production patterns. It links to a recording of the POSETTE talk for the complete presentation.
For readers evaluating their own systems, the next useful step is to compare storage waits and workload metrics in the relevant environment rather than assume the reported ratio will carry over. Further testing across EBS performance tiers, workloads, and sustained operating conditions would clarify how widely the benchmark’s results apply.
enterprise SSD for database workloads
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
What did the PostgreSQL benchmark compare?
It compared four PostgreSQL clusters on local instance-store NVMe with four on baseline gp3 EBS provisioned at 3,000 IOPS. The clusters ran identical compute configurations and a five-minute random-update workload.
How large was the reported throughput difference?
For this test, median throughput was 16,030 transactions per second on NVMe and 1,734 on EBS, a reported 9.24× difference. The figure should not be treated as a general performance ratio for all PostgreSQL deployments.
Why did NVMe perform faster in the test?
ClickHouse’s analysis found much less time spent on page reads and WAL synchronization on NVMe. It reported similar CPU work per transaction in the two groups, suggesting that storage waits accounted for much of the measured latency gap in this workload.
Does the benchmark prove PostgreSQL is not the cause of slow performance?
No. It shows that storage was a major factor in this specific comparison. PostgreSQL performance problems can have other causes, and the reported test does not cover every workload or configuration.
Would a different EBS setup produce the same result?
That is not established. The benchmark used baseline gp3 provisioned at 3,000 IOPS, and ClickHouse says a different EBS setup would likely produce different results.
Source: hn
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
