#!/bin/bash dbname=postgres secs=10 rows=1000000 extra_cols_start=0 extra_cols_end=40 extra_cols_increment=10 psql -c "alter system set max_parallel_workers_per_gather = 0;" $dbname > /dev/null 2>&1 psql -c "alter system set jit = 0;" $dbname > /dev/null 2>&1 psql -c "select pg_reload_conf();" $dbname > /dev/null 2>&1 psql -c "create extension if not exists pg_prewarm;" $dbname > /dev/null 2>&1 test_id=1 for extracol in ", b int not null default 0" ", b int default null" do for firstcol in "c int not null default 0" "c text not null default '0'" "c int null" "c text null" do for c in $(seq $extra_cols_start $extra_cols_increment $extra_cols_end) do psql -c "drop table if exists t1;" $dbname > /dev/null 2>&1 sql="create table t1 ($firstcol" for i in $(seq 0 $c) do sql="$sql,c$i int not null default 0" done sql="$sql,a int not null$extracol);" psql -c "$sql" $dbname > /dev/null 2>&1 psql -c "insert into t1 (a) select a from generate_series(1,$rows) a;" $dbname > /dev/null 2>&1 psql -c "vacuum freeze analyze t1;" $dbname > /dev/null 2>&1 psql -c "select pg_prewarm('t1');" $dbname > /dev/null 2>&1 echo "select sum(a) from t1;" > bench.sql for run in {1..3} do # ,CC,,test_id,extra_columns,run,average_time_ms sleep 10 echo -n "$1,$2,$3,$test_id,$c,$run," pgbench -n -f bench.sql -M prepared -T $secs $dbname | grep latency | grep -Po "\d+\.\d+" done done let "test_id=test_id+1" done done