Patched ------ relname | nrows | blk_before | mb_before | blk_after | mb_after | diff -----------------------+-----------+------------+-----------+-----------+----------+-------- pgbench_accounts | 300000000 | 4918033 | 38422.1 | 5067500 | 39589.8 | +3.0% accounts_mtime | 300000000 | 1155119 | 9024.4 | 1283441 | 10026.9 | +11.1% fiver | 300000000 | 427039 | 3336.2 | 429101 | 3352.4 | +0.5% pgbench_accounts_pkey | 300000000 | 822573 | 6426.4 | 826056 | 6453.6 | +0.4% score | 300000000 | 284022 | 2218.9 | 285465 | 2230.2 | +0.5% tenner | 300000000 | 346050 | 2703.5 | 347695 | 2716.4 | +0.5% (6 rows) DB size: 65.2..67.5 (+2.3GB / +3.5%) scaling factor: 3000 query mode: simple number of clients: 8 number of threads: 2 duration: 14400 s number of transactions actually processed: 31909450 latency average = 3.610 ms tps = 2215.933633 (including connections establishing) tps = 2215.933884 (excluding connections establishing) statement latencies in milliseconds: 0.001 \set aid1 random_gaussian(1, 100000 * :scale, 2.0) 0.001 \set aid2 random_gaussian(1, 100000 * :scale, 2.5) 0.000 \set delta random(-5000, 5000) 0.034 BEGIN; 0.452 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid1; 0.194 SELECT abalance FROM pgbench_accounts WHERE aid = :aid2; 2.926 END; scaling factor: 3000 query mode: simple number of clients: 8 number of threads: 2 duration: 14400 s number of transactions actually processed: 7078811 latency average = 16.274 ms tps = 491.583735 (including connections establishing) tps = 491.583794 (excluding connections establishing) statement latencies in milliseconds: 0.002 \set aid2 random_gaussian(1, 100000 * :scale, 3.0) 0.298 SELECT abalance FROM pgbench_accounts WHERE aid = :aid2; 3.190 INSERT INTO pgbench_accounts 12.788 DELETE FROM pgbench_accounts WHERE aid IN scaling factor: 3000 query mode: simple number of clients: 1 number of threads: 1 duration: 14400 s number of transactions actually processed: 40 latency average = 363313.472 ms tps = 0.002752 (including connections establishing) tps = 0.002752 (excluding connections establishing) statement latencies in milliseconds: 363313.426 SELECT abalance, pg_sleep(300) FROM pgbench_accounts WHERE mtime > now() - INTERVAL '15min' ORDER BY aid LIMIT 1;