Skip to content

feat(pg-native): pipeline mode#3596

Open
nigrosimone wants to merge 6 commits intobrianc:masterfrom
nigrosimone:pg-native-pipeline
Open

feat(pg-native): pipeline mode#3596
nigrosimone wants to merge 6 commits intobrianc:masterfrom
nigrosimone:pg-native-pipeline

Conversation

@nigrosimone
Copy link
Contributor

@nigrosimone nigrosimone commented Feb 7, 2026

same as #3591 but for pg-native (complete #3592)

const Client = require('pg-native')

const client = new Client({
  pipelineMode: true,
  pipelineMaxQueries: 100  // default: 1000
})

client.connectSync() // or: client.connect(callback)

client.query('SELECT $1::int as num', [1], (err, rows) => {
  console.log(rows)
}) // or: await client.query('SELECT 1 as num')

Benchmark

node index.js
============================================================
pg-native Benchmark
============================================================
Pipeline mode supported: true

Warming up...
Warmup complete.

--- Iteration 1/3 ---

Simple query (SELECT 1):
  pg.native:         5263 qps (26314 queries in 5000ms)
  Native:            6858 qps (34290 queries in 5000ms)
  Native+Pipeline:   5866 qps (29328 queries in 5000ms)

Complex query (generate_series):
  pg.native:         1074 qps (5368 queries in 5000ms)
  Native:            1035 qps (5174 queries in 5000ms)
  Native+Pipeline:   1117 qps (5586 queries in 5000ms)

Concurrent queries (10 queries in parallel):
  pg.native:         6873 qps (34370 queries in 5001ms)
  Native:            N/A (concurrent queries not supported without pipeline)
  Native+Pipeline:   20363 qps (101820 queries in 5000ms)

--- Iteration 2/3 ---

Simple query (SELECT 1):
  pg.native:         6538 qps (32693 queries in 5000ms)
  Native:            6990 qps (34952 queries in 5000ms)
  Native+Pipeline:   6255 qps (31277 queries in 5000ms)

Complex query (generate_series):
  pg.native:         928 qps (4642 queries in 5001ms)
  Native:            771 qps (3858 queries in 5001ms)
  Native+Pipeline:   687 qps (3435 queries in 5000ms)

Concurrent queries (10 queries in parallel):
  pg.native:         6582 qps (32920 queries in 5001ms)
  Native:            N/A (concurrent queries not supported without pipeline)
  Native+Pipeline:   19832 qps (99160 queries in 5000ms)

--- Iteration 3/3 ---

Simple query (SELECT 1):
  pg.native:         6560 qps (32799 queries in 5000ms)
  Native:            6891 qps (34458 queries in 5000ms)
  Native+Pipeline:   6447 qps (32234 queries in 5000ms)

Complex query (generate_series):
  pg.native:         1050 qps (5248 queries in 5000ms)
  Native:            1043 qps (5217 queries in 5000ms)
  Native+Pipeline:   1014 qps (5073 queries in 5001ms)

Concurrent queries (10 queries in parallel):
  pg.native:         6664 qps (33320 queries in 5000ms)
  Native:            N/A (concurrent queries not supported without pipeline)
  Native+Pipeline:   19603 qps (98020 queries in 5000ms)

============================================================
SUMMARY (average QPS over 3 iterations)
============================================================

Simple query (SELECT 1):
  pg.native          6120 qps
  Native             6913 qps (13.0% vs pg.native)
  Native+Pipeline    6189 qps (1.1% vs pg.native)

Complex query (generate_series):
  pg.native          1017 qps
  Native             950 qps (-6.6% vs pg.native)
  Native+Pipeline    939 qps (-7.7% vs pg.native)

Concurrent queries (10 in parallel):
  pg.native          6706 qps
  Native+Pipeline    19933 qps (197.2% vs pg.native)
  Native             N/A (not supported)

Pipeline mode impact (vs Native without pipeline):
  Simple query:       -10.5%
  Complex query:      -1.2%
  Concurrent queries: 197.2% (vs pg.native, Native N/A)

@nigrosimone nigrosimone marked this pull request as ready for review February 7, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant