dbname=test rows=10000 secs=10 ntests=3 psql -c "drop table if exists part_test;" $dbname psql -c "create table part_test (a int not null);" $dbname psql -c "insert into part_test select g.s from generate_series(1,$rows) g(s);" $dbname psql -c "vacuum freeze analyze part_test;" $dbname psql -c "alter system set work_mem = '64kB';" $dbname psql -c "alter system set jit = 0;" $dbname psql -c "select pg_reload_conf();" $dbname for c in 1 10 100 1000 5000 10000 do echo "SELECT a,count(*) OVER (PARTITION BY a / $c) FROM part_test OFFSET $rows" > bench.sql echo "Testing with $(($rows / $c)) partitions" for i in $(seq 1 $ntests) do pgbench -n -f bench.sql -M prepared -T $secs $dbname | grep latency done done