Last updated: 2026-04-11 12:44 UTC
These benchmarks are automatically generated by the CI pipeline using pgbench.
- Pool size: 40 connections
- Test duration: 30 seconds per test
- Instance: AWS Fargate (16 vCPU, 32 GB RAM)
- Workers: pg_doorman: 12, odyssey: 12
- pgbench jobs: 4 (global override)
- Started: 2026-04-11 11:21:03 UTC
- Finished: 2026-04-11 12:44:05 UTC
- Total duration: 1h 23m 2s
TPS tables — relative throughput: pg_doorman vs pgbouncer and odyssey.
| Symbol | Meaning |
| +N% | pg_doorman is N% faster |
| -N% | pg_doorman is N% slower |
| ≈0% | Within 3%, effectively equal |
| xN | N times faster/slower (large gap) |
| ∞ | Competitor scored 0 TPS |
| N/A | Not supported by this pooler |
| - | Not executed |
Latency tables — absolute transaction latency in milliseconds.
Each cell shows p50 / p95 / p99 percentiles. Lower is better.
| Test | vs pgbouncer | vs odyssey |
| 1 client | -5% | -10% |
| 40 clients | -24% | x0.3 |
| 120 clients | -9% | x0.3 |
| 500 clients | -13% | x0.3 |
| 10,000 clients | ≈0% | x0.4 |
| 1 client + Reconnect | ≈0% | x26.0 |
| 40 clients + Reconnect | +19% | x2.8 |
| 120 clients + Reconnect | +19% | +86% |
| 500 clients + Reconnect | +19% | x2.3 |
| 10,000 clients + Reconnect | +64% | +97% |
| 1 client + SSL | ≈0% | -7% |
| 40 clients + SSL | +10% | x0.5 |
| 120 clients + SSL | +40% | x0.4 |
| 500 clients + SSL | +47% | x0.4 |
| 10,000 clients + SSL | +63% | -42% |
| Test | pg_doorman (ms) | pgbouncer (ms) | odyssey (ms) |
| 1 client | 0.07 / 0.08 / 0.09 | 0.07 / 0.08 / 0.08 | 0.06 / 0.07 / 0.08 |
| 40 clients | 0.74 / 0.82 / 0.86 | 0.53 / 0.78 / 0.81 | 0.21 / 0.42 / 0.54 |
| 120 clients | 2.27 / 2.43 / 2.50 | 2.03 / 2.33 / 2.47 | 0.46 / 1.45 / 2.29 |
| 500 clients | 9.93 / 10.50 / 10.69 | 8.48 / 9.62 / 10.45 | 0.88 / 12.93 / 22.46 |
| 10,000 clients | 194.24 / 198.04 / 205.08 | 189.87 / 206.61 / 221.84 | 3.65 / 390.30 / 637.56 |
| 1 client + Reconnect | 0.07 / 0.08 / 0.09 | 0.06 / 0.08 / 0.08 | 0.07 / 0.09 / 0.12 |
| 40 clients + Reconnect | 1.08 / 2.21 / 2.52 | 1.02 / 2.37 / 11.58 | 0.75 / 2.69 / 3.52 |
| 120 clients + Reconnect | 3.31 / 6.22 / 7.42 | 3.18 / 6.95 / 33.32 | 4.35 / 8.80 / 11.00 |
| 500 clients + Reconnect | 14.08 / 25.45 / 29.15 | 13.86 / 30.04 / 118.75 | 23.65 / 43.08 / 65.44 |
| 10,000 clients + Reconnect | 294.26 / 513.32 / 546.17 | 604.24 / 924.80 / 961.10 | 542.93 / 922.84 / 1092.06 |
| 1 client + SSL | 0.08 / 0.09 / 0.10 | 0.08 / 0.09 / 0.10 | 0.07 / 0.09 / 0.09 |
| 40 clients + SSL | 0.66 / 0.74 / 0.79 | 0.69 / 1.00 / 1.07 | 0.25 / 0.53 / 0.75 |
| 120 clients + SSL | 2.00 / 2.14 / 2.20 | 2.78 / 3.15 / 3.39 | 0.50 / 1.86 / 3.82 |
| 500 clients + SSL | 8.71 / 9.13 / 9.34 | 12.62 / 14.29 / 15.26 | 1.06 / 15.99 / 28.55 |
| 10,000 clients + SSL | 173.70 / 180.58 / 186.38 | 279.06 / 292.34 / 382.70 | 5.89 / 469.96 / 768.96 |
| Test | vs pgbouncer | vs odyssey |
| 1 client | +5% | +40% |
| 40 clients | -18% | -49% |
| 120 clients | -5% | x0.5 |
| 500 clients | -9% | x0.5 |
| 10,000 clients | ≈0% | -37% |
| 1 client + Reconnect | ≈0% | x4.0 |
| 40 clients + Reconnect | +21% | x2.5 |
| 120 clients + Reconnect | +20% | x2.3 |
| 500 clients + Reconnect | +18% | +95% |
| 10,000 clients + Reconnect | +63% | x2.2 |
| 1 client + SSL | +6% | +38% |
| 40 clients + SSL | -10% | -46% |
| 120 clients + SSL | +13% | x0.5 |
| 500 clients + SSL | +16% | -50% |
| 10,000 clients + SSL | +38% | -28% |
| 1 client + SSL + Reconnect | +5% | +10% |
| 40 clients + SSL + Reconnect | +91% | ≈0% |
| 120 clients + SSL + Reconnect | +92% | ≈0% |
| 500 clients + SSL + Reconnect | +93% | ≈0% |
| 10,000 clients + SSL + Reconnect | +88% | ≈0% |
| Test | pg_doorman (ms) | pgbouncer (ms) | odyssey (ms) |
| 1 client | 0.07 / 0.08 / 0.08 | 0.07 / 0.08 / 0.09 | 0.10 / 0.11 / 0.12 |
| 40 clients | 0.73 / 0.81 / 0.85 | 0.56 / 0.83 / 0.86 | 0.31 / 0.61 / 0.80 |
| 120 clients | 2.26 / 2.41 / 2.48 | 2.11 / 2.46 / 2.61 | 0.72 / 2.44 / 3.95 |
| 500 clients | 9.88 / 10.37 / 10.57 | 8.84 / 10.15 / 10.79 | 1.03 / 20.12 / 34.87 |
| 10,000 clients | 193.17 / 196.37 / 199.57 | 198.35 / 205.46 / 217.57 | 3.69 / 489.50 / 942.06 |
| 1 client + Reconnect | 0.07 / 0.08 / 0.09 | 0.07 / 0.08 / 0.09 | 0.11 / 0.12 / 0.14 |
| 40 clients + Reconnect | 1.08 / 2.21 / 2.52 | 1.05 / 2.44 / 10.91 | 0.85 / 2.67 / 3.46 |
| 120 clients + Reconnect | 3.32 / 6.24 / 7.47 | 3.23 / 7.05 / 33.19 | 4.70 / 9.38 / 11.28 |
| 500 clients + Reconnect | 14.11 / 25.63 / 29.16 | 13.97 / 29.40 / 117.97 | 23.89 / 43.61 / 50.39 |
| 10,000 clients + Reconnect | 295.31 / 515.67 / 550.22 | 593.23 / 918.61 / 958.93 | 522.83 / 939.84 / 1086.13 |
| 1 client + SSL | 0.08 / 0.09 / 0.09 | 0.08 / 0.09 / 0.10 | 0.11 / 0.12 / 0.13 |
| 40 clients + SSL | 0.83 / 0.93 / 0.97 | 0.71 / 1.04 / 1.12 | 0.38 / 0.77 / 1.03 |
| 120 clients + SSL | 2.56 / 2.73 / 2.81 | 2.86 / 3.29 / 3.49 | 0.87 / 3.04 / 5.17 |
| 500 clients + SSL | 11.39 / 12.04 / 12.31 | 13.00 / 14.86 / 16.14 | 1.25 / 24.01 / 42.55 |
| 10,000 clients + SSL | 212.95 / 216.10 / 231.20 | 287.79 / 308.72 / 401.89 | 14.65 / 587.21 / 1020.74 |
| 1 client + SSL + Reconnect | 0.10 / 0.13 / 0.14 | 0.08 / 0.10 / 0.11 | 0.10 / 0.12 / 0.14 |
| 40 clients + SSL + Reconnect | 13.17 / 24.64 / 26.78 | 25.17 / 46.24 / 46.77 | 13.25 / 24.84 / 26.76 |
| 120 clients + SSL + Reconnect | 40.00 / 74.57 / 81.84 | 75.98 / 141.41 / 151.72 | 40.20 / 74.29 / 82.05 |
| 500 clients + SSL + Reconnect | 166.28 / 309.73 / 332.04 | 317.52 / 599.89 / 643.58 | 167.21 / 310.92 / 337.99 |
| 10,000 clients + SSL + Reconnect | 3107.01 / 6295.18 / 6626.09 | 5339.46 / 11847.88 / 12444.27 | 3113.78 / 6245.48 / 6642.69 |
| Test | vs pgbouncer | vs odyssey |
| 1 client | -4% | -11% |
| 40 clients | -5% | x0.3 |
| 120 clients | +15% | x0.3 |
| 500 clients | +10% | x0.3 |
| 10,000 clients | +21% | x0.4 |
| 1 client + Reconnect | ≈0% | ∞ |
| 40 clients + Reconnect | ≈0% | ∞ |
| 120 clients + Reconnect | ≈0% | ∞ |
| 500 clients + Reconnect | +6% | ∞ |
| 10,000 clients + Reconnect | +22% | ∞ |
| 1 client + SSL | -4% | -9% |
| 40 clients + SSL | +4% | x0.4 |
| 120 clients + SSL | +28% | x0.3 |
| 500 clients + SSL | +33% | x0.3 |
| 10,000 clients + SSL | +56% | x0.5 |
| Test | pg_doorman (ms) | pgbouncer (ms) | odyssey (ms) |
| 1 client | 0.07 / 0.08 / 0.08 | 0.07 / 0.07 / 0.08 | 0.06 / 0.07 / 0.08 |
| 40 clients | 0.72 / 0.80 / 0.84 | 0.67 / 0.95 / 1.00 | 0.20 / 0.40 / 0.53 |
| 120 clients | 2.23 / 2.37 / 2.42 | 2.52 / 2.82 / 2.94 | 0.42 / 1.39 / 2.26 |
| 500 clients | 9.59 / 10.07 / 10.27 | 10.40 / 11.45 / 12.09 | 0.81 / 12.57 / 21.84 |
| 10,000 clients | 187.91 / 192.43 / 203.97 | 224.50 / 240.41 / 252.26 | 3.52 / 380.15 / 622.55 |
| 1 client + Reconnect | 0.12 / 0.13 / 0.15 | 0.11 / 0.12 / 0.14 | - |
| 40 clients + Reconnect | 1.60 / 3.06 / 3.37 | 1.64 / 3.02 / 3.35 | 2.04 / 3.93 / 4.87 |
| 120 clients + Reconnect | 4.61 / 8.53 / 9.92 | 4.76 / 8.82 / 9.95 | 5.79 / 13.97 / 44.86 |
| 500 clients + Reconnect | 19.32 / 34.87 / 38.27 | 20.44 / 37.22 / 41.99 | 24.32 / 68.90 / 149.10 |
| 10,000 clients + Reconnect | 400.17 / 718.30 / 756.77 | 475.32 / 903.35 / 952.33 | - |
| 1 client + SSL | 0.08 / 0.09 / 0.09 | 0.08 / 0.08 / 0.09 | 0.07 / 0.08 / 0.09 |
| 40 clients + SSL | 0.81 / 0.90 / 0.94 | 0.82 / 1.17 / 1.26 | 0.22 / 0.50 / 0.75 |
| 120 clients + SSL | 2.49 / 2.65 / 2.72 | 3.15 / 3.40 / 3.71 | 0.46 / 1.77 / 3.85 |
| 500 clients + SSL | 10.93 / 11.56 / 11.85 | 14.39 / 15.69 / 16.98 | 0.96 / 15.07 / 27.22 |
| 10,000 clients + SSL | 207.95 / 212.67 / 226.54 | 315.01 / 330.71 / 486.66 | 6.12 / 450.62 / 744.07 |
- Odyssey has poor support for extended query protocol in transaction pooling mode
- TPS values are relative ratios, not absolute numbers — they stay consistent across sequential runs on the same hardware
- Latency percentiles are absolute values collected via
pgbench --log