2026 PostgreSQL Performance Benchmark Report

By John Doe September 28, 2026

Summary: This report presents comprehensive sysbench OLTP benchmark results for the latest PostgreSQL 18.6 release. Tests span 3 buffer pool tiers (2GB, 12GB, 32GB) and 6 concurrency levels (4 to 256 threads).

Table of Contents

Test Environment & Infrastructure

Hardware & Host Configuration

Hardware configuration of the host:

Component Specification
Architecture x86-64
ECS Instance Type Huawei Cloud General Computing Plus, c9.8xlarge.4 (32vCPU 128GB), c9.4xlarge.4 (16vCPU 64GB)
Storage General Purpose SSD v2, Capacity 200GB, IOPS 100000, Throughput 1000 MB/s

Software Configuration:

Component Specification
Operating System Rocky Linux 9.6 64-bit
Kernel Version 5.14.0-570.17.1
PostgreSQL Version 18.6
Benchmarking Tool sysbench 1.1.0, with LuaJIT 2.1.0-beta3
PostgreSQL Client psql (used for version detection and configuration validation)
Monitoring Tool nmon (collected every second during tests)

Buffer Pool Tiers

With the database size of 24G, three InnoDB buffer pool sizes were tested, each representing a distinct workload characteristic:

Tier Shared Buffer Size Workload Character
2 GB 2 GB I/O bound — dataset substantially exceeds buffer pool (1:12); heavy read amplification
12 GB 12 GB Mixed — partial dataset fits in memory (1:2); realistic production scenario
32 GB 32 GB In-memory — full working set fits; CPU and locking are primary bottlenecks

Additionally, the WAL log space was adjusted according to the actual shared_buffers size. This ensures that checkpoints consistently trigger at fixed time intervals.

Database Configuration

The schema contains 20 tables with 5M rows in each one adding up to 100M rows.

The size of the database files on the disk is 24G.

A common configuration was applied to all engines to ensure fairness. The buffer pool specifications were layered on top

Parameter Value Configuration Note
max_connections 1000 Reserved sufficient connections, above max 256 test threads.
logging_collector on Enable the logging collector.

Test Steps

Create the test database “bench”:

createdb bench

Use the sysbench command to load test data into the “bench” database:

sysbench oltp_read_write \
--tables=20 \
--table_size=5000000 \
--pgsql-user=postgres \
--pgsql-db=bench \
prepare

After loading the test data, vacuum the “bench” database:

vacuumdb bench

Run the performance benchmark test:

sysbench oltp_read_write \
--pgsql-user=postgres \
--pgsql-db=bench \
--tables=20 \
--table_size=5000000 \
--threads=128 \
--time=600 \
--report-interval=10 \
run

Note: The first run is a warmup phase and is not recorded as formal test result data.

Test Results

The TPS (Transactions Per Second) metrics collected below represent the number of transactions processed by the database per second. In the Sysbench read-write testing model, a single transaction contains 20 query statements, so the Queries Per Second (QPS) processed by the database is approximately 20 times the TPS.

Scenario 1: In-Memory

Instance Type: c9.8xlarge.4 (32vCPU 128GB)

Database Parameter Configuration:

shared_buffers = 32GB
max_wal_size = 32GB
min_wal_size = 4GB
Sysbench Threads TPS (PostgreSQL) TPS (Redrock Postgres)
4 1752.42 1742.26
16 4150.17 4404.45
32 5905.28 5854.78
64 10144.89 10011.48
128 13793.44 13895.51
256 15260.80 15685.06

In-Memory Scenario

Scenario 2: Mixed

Instance Type: c9.4xlarge.4 (16vCPU 64GB)

Database Parameter Configuration:

shared_buffers = 12GB
max_wal_size = 12GB
min_wal_size = 2GB
Sysbench Threads TPS (PostgreSQL) TPS (Redrock Postgres)
4 1452.00 1567.00
16 2611.87 3097.21
32 3488.18 4589.56
64 4682.07 5980.58
128 5916.14 7093.96
256 5662.79 6229.91

Mixed Workload Scenario

Scenario 3: I/O Bound

Instance Type: c9.4xlarge.4 (16vCPU 64GB)

Database Parameter Configuration:

shared_buffers = 2GB
max_wal_size = 2GB
min_wal_size = 256MB
Sysbench Threads TPS (PostgreSQL) TPS (Redrock Postgres)
4 1243.74 1391.79
16 2180.26 2668.91
32 3128.07 4038.71
64 3730.14 4662.09
128 3950.43 5071.72
256 4427.00 5336.35

I/O Bound Scenario

References

Percona: 2026 MySQL Ecosystem Performance Benchmark Report