PGBENCH(1) PostgreSQL 18.6 Documentation PGBENCH(1) (NAME) pgbench - (benchmark) PostgreSQL (SYNOPSIS) pgbench -i [option...] [dbname] pgbench [option...] [dbname] (DESCRIPTION) pgbench (benchmark) PostgreSQL . SQL ( TPS) . pgbench TPC-B SELECT UPDATE INSERT . . pgbench : transaction type: scaling factor: 10 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 number of transactions per client: 1000 number of transactions actually processed: 10000/10000 number of failed transactions: 0 (0.000%) latency average = 11.013 ms latency stddev = 7.351 ms initial connection time = 45.758 ms tps = 896.967014 (without initial connection time) . ( Failures and Serialization/Deadlock Retries ). ( ) SQL . ( -T .) ( Failures and Serialization/Deadlock Retries ). . TPC-B . pgbench -i ( ) . ( .) : pgbench -i [ other-options ] dbname dbname . ( -h -p -U .) Caution pgbench -i pgbench_accounts pgbench_branches pgbench_history pgbench_tellers . ! " (scale factor)" : table # of rows --------------------------------- pgbench_branches 1 pgbench_tellers 10 pgbench_accounts 100000 pgbench_history 0 ( ) -s ( ) . -F ( fillfactor) . -i : pgbench [ options ] dbname . -c ( ) -t ( ) -T ( ) -f ( ). . (OPTIONS) . . (Initialization Options) pgbench : [-d] dbname [--dbname=]dbname . PGDATABASE . . -i --initialize . -I init_steps --init-steps=init_steps . init_steps . . dtgvp . : d (Drop) pgbench (Drop) . t (create Tables) pgbench pgbench_accounts pgbench_branches pgbench_history pgbench_tellers . g G (Generate data, client-side or server-side) . g ( ) pgbench . / COPY . pgbench FREEZE () PostgreSQL VACUUM . g . G ( ) pgbench . . G . ( g). v (Vacuum) VACUUM . p (create Primary keys) . f (create Foreign keys) . ( .) -F fillfactor --fillfactor=fillfactor pgbench_accounts pgbench_tellers pgbench_branches (fillfactor) . . -n --no-vacuum (Vacuum) . ( v -I .) -q --quiet . ( ) . G -I . -s scale_factor --scale=scale_factor (scale factor) . -s 100 pgbench_accounts . . ( aid) (bigint) . --foreign-keys . ( f .) --index-tablespace=index_tablespace . --partition-method=NAME pgbench_accounts NAME . range hash. --partitions . range . --partitions=NUM pgbench_accounts NUM . 0 . --tablespace=tablespace . --unlogged-tables unlogged . (Benchmarking Options) pgbench : -b scriptname[@weight] --builtin=scriptname[@weight] . : tpcb-like simple-update select-only. . list . @ . 1 . . -c clients --client=clients . 1 . -C --connect . . -D varname=value --define=varname=value ( ). -D . -f filename[@weight] --file=filename[@weight] filename . @ . 1 . ( @ filen@me@1.) . -j threads --jobs=threads (worker threads) pgbench. . . 1 . -l --log . . -L limit --latency-limit=limit limit late . (--rate=...) limit . skipped . --max-tries (serialization anomaly) (deadlock) limit . --max-tries=0 . --max-tries 1 / . Failures and Serialization/Deadlock Retries . -M querymode --protocol=querymode : o simple: (simple query protocol). o extended: (extended query protocol). o prepared: (prepared statements). prepared pgbench pgbench . . ( 54 .) -n --no-vacuum (vacuuming) . pgbench_accounts pgbench_branches pgbench_history pgbench_tellers . -N --skip-some-updates simple-update . -b simple-update. -P sec --progress=sec sec . (TPS) . (-R) . --max-tries / . -r --report-per-command : ( ) . --max-tries . -R rate --rate=rate ( ). . . (Poisson-distributed) . . . (throttling) . (schedule lag time) . . --latency-limit --rate . . . . . -s scale_factor --scale=scale_factor (scale factor) pgbench . pgbench_branches . ( -f) . -S --select-only select-only . -b select-only. -t transactions --transactions=transactions . . -T seconds --time=seconds . -t -T ( ). -v --vacuum-all (vacuum) . -n -v pgbench pgbench_tellers pgbench_branches (vacuum) pgbench_history (truncate) . --aggregate-interval=seconds ( ). -l . . --exit-on-abort (abort) . -t -T pgbench . . Failures and Serialization/Deadlock Retries . --failures-detailed : o (serialization failures) o (deadlock failures) Failures and Serialization/Deadlock Retries . --log-prefix=prefix --log . pgbench_log . --max-tries=number_of_tries / . --latency-limit (--max-tries=0) --latency-limit --time . / . Failures and Serialization/Deadlock Retries . --progress-timestamp ( -P) (Unix epoch) . . . --random-seed=seed (seed) . . seed : time ( ) rand ( ) . pgbench ( random..) ( --rate ). . seed PGBENCH_RANDOM_SEED . . pgbench . pgbench . . . . --sampling-rate=rate . . 1.0 0.05 . . TPS ( 0.01 / TPS ). --show-script=scriptname scriptname stderr . --verbose-errors ( ) / . ( .) Failures and Serialization/Deadlock Retries . (Common Options) pgbench : --debug . -h hostname --host=hostname . -p port --port=port . -U login --username=login . -V --version pgbench . -? --help pgbench . (EXIT STATUS) 0 . 1 . ( ) 1 . 2 . --exit-on-abort pgbench . (ENVIRONMENT) PGDATABASE PGHOST PGPORT PGUSER . PostgreSQL libpq ( 32.15 ). PG_COLOR . always auto never. (NOTES) <<>> pgbench (What Is the "Transaction" Actually Performed in pgbench?) pgbench . -b -f . @ . 1 . 0 . ( -b tpcb-like ) aid tid bid delta . TPC-B TPC-B . 1. BEGIN; 2. UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid; 3. SELECT abalance FROM pgbench_accounts WHERE aid = :aid; 4. UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid; 5. UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid; 6. INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); 7. END; simple-update ( -N) 4 5 . TPC-B . select-only ( -S) SELECT . (Custom Scripts) pgbench (benchmark) ( ) ( -f) . "" . SQL - . -- . " " pgbench . PostgreSQL 9.6 SQL . SQL - ( SQL - ). pgbench SQL - . pgbench SQL . (abort) . . ( ) (underscore) . -D . -D Table 301 . -D . :variablename SQL . . pgbench . Table 301. pgbench Automatic Variables +-------------+-----------------------------------+ |Variable | | +-------------+-----------------------------------+ |client_id | | | | | | | | | | ( | | | ) | +-------------+-----------------------------------+ |default_seed | | | | | | | | | | | | | | +-------------+-----------------------------------+ |random_seed | | | | ( | | | -D | | | | | | ) | +-------------+-----------------------------------+ |scale | | | | | +-------------+-----------------------------------+ (\) - (backslash-return) . (white space) . : \gset [prefix] \aset [prefix] SQL - (;) . \gset SQL prefix . \aset SQL ( \; ) prefix . . . \gset \aset (pipeline mode) . abalance p_two p_three . . four five . UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid RETURNING abalance \gset -- compound of two queries SELECT 1 \; SELECT 2 AS two, 3 AS three \gset p_ SELECT 4 AS four \; SELECT 5 AS five \aset \if expression \elif expression \else \endif \if expression psql . \set (true) . \set varname expression varname expression . NULL (Boolean) TRUE FALSE 5432 (double) 3.14159 :variablename SQL CASE SQL . NULL NULL . TRUE NULL FALSE . (double) (+ -, * /) (overflow) . ELSE CASE NULL . : \set ntellers 10 * :scale \set aid (1021 * random(1, 100000 * :scale)) % \ (100000 * :scale) + 1 \set divx CASE WHEN :x <> 0 THEN :y/:x ELSE NULL END \sleep number [ us | ms | s ] (sleep) (us) (ms) (s) . . number :variablename . : \sleep 10 ms \setshell varname command [ argument ... ] varname command argument() . . command argument :variablename . argument argument . : \setshell variable_to_be_assigned command literal_argument :variable ::literal_starting_with_colon \shell command [ argument ... ] \setshell . : \shell command literal_argument :variable ::literal_starting_with_colon \startpipeline \syncpipeline \endpipeline (pipelining) SQL . \startpipeline \endpipeline . \syncpipeline (sync message) (flush) . . 32.5 . (extended query protocol) . (Built-in Operators) Table 302 pgbench \set . . (double) double (integer) . Table 302. pgbench Operators +----------------------------------------+ | Operator .PP | | (Description) | |.PP Example(s) | +----------------------------------------+ | boolean OR boolean -> boolean | |.PP OR .PP 5 or | |0 -> TRUE | +----------------------------------------+ | boolean AND boolean -> boolean | |.PP AND .PP 3 | |and 0 -> FALSE | +----------------------------------------+ | NOT boolean -> boolean .PP NOT | | .PP not false | |-> TRUE | +----------------------------------------+ | boolean IS [NOT] (NULL|TRUE|FALSE) -> | |boolean .PP | | | | (Boolean) | |.PP 1 is null -> FALSE | +----------------------------------------+ | value ISNULL|NOTNULL -> boolean | |.PP | | (Nullness) | |.PP 1 notnull -> TRUE | +----------------------------------------+ | number = number -> boolean .PP | | .PP 5 = 4 -> | |FALSE | +----------------------------------------+ | number <> number -> boolean | |.PP .PP 5 | |<> 4 -> TRUE | +----------------------------------------+ | number != number -> boolean | |.PP .PP 5 | |!= 5 -> FALSE | +----------------------------------------+ | number < number -> boolean .PP | | | |.PP 5 < 4 -> FALSE | +----------------------------------------+ | number <= number -> boolean | |.PP | | .PP 5 <= | |4 -> FALSE | +----------------------------------------+ | number > number -> boolean .PP | | | |.PP 5 > 4 -> TRUE | +----------------------------------------+ | number >= number -> boolean | |.PP | | .PP 5 >= | |4 -> TRUE | +----------------------------------------+ | integer | integer -> integer | |.PP OR .PP 1 | 2 | |-> 3 | +----------------------------------------+ | integer # integer -> integer | |.PP XOR .PP 1 # 3 | |-> 2 | +----------------------------------------+ | integer & integer -> integer | |.PP AND .PP 1 & 3 | |-> 1 | +----------------------------------------+ | ~ integer -> integer .PP NOT | | .PP ~ 1 -> -2 | +----------------------------------------+ | integer << integer -> integer | |.PP | | .PP 1 << 2 -> 4 | +----------------------------------------+ | integer >> integer -> integer | |.PP | | .PP 8 >> 2 -> 2 | +----------------------------------------+ | number + number -> number .PP | | .PP 5 + 4 -> 9 | +----------------------------------------+ | number - number -> number .PP | | .PP 3 - 2.0 -> | |1.0 | +----------------------------------------+ | number * number -> number .PP | | .PP 5 * 4 -> 20 | +----------------------------------------+ | number / number -> number .PP | | ( | | | | | | | | ) | |.PP 5 / 3 -> 1 | +----------------------------------------+ | integer % integer -> integer | |.PP | |(Modulo) .PP 3 % 2 -> 1 | +----------------------------------------+ | - number -> number .PP | | | |(Negation) .PP - 2.0 -> -2.0 | +----------------------------------------+ (Built-In Functions) Table 303 pgbench \set . Table 303. pgbench Functions +-------------------------------------------+ | Function .PP | | (Description) | |.PP Example(s) | +-------------------------------------------+ | abs ( number ) -> same type as input | |.PP | |.PP abs(-17) -> 17 | +-------------------------------------------+ | debug ( number ) -> same type as input | |.PP | |stderr | | | |. | |.PP debug(5432.1) -> 5432.1 | +-------------------------------------------+ | double ( number ) -> double .PP | | double | |. .PP | |double(5432) -> 5432.0 | +-------------------------------------------+ | exp ( number ) -> double .PP | | ( e | | | |) .PP | |exp(1.0) -> 2.718281828459045 | +-------------------------------------------+ | greatest ( number [, ... ] ) -> double if | |any argument is double, else integer | |.PP | | | | | | . | |.PP greatest(5, 4, 3, 2) -> 5 | +-------------------------------------------+ | hash ( value [, seed ] ) -> integer | |.PP | | | |hash_murmur2 . .PP | |hash(10, 5432) -> -5817877081768721676 | +-------------------------------------------+ | hash_fnv1a ( value [, seed ] ) -> integer | |.PP FNV-1a | | . | |.PP hash_fnv1a(10, 5432) -> | |-7793829335365542153 | +-------------------------------------------+ | hash_murmur2 ( value [, seed ] ) -> | |integer .PP MurmurHash2 | | | |. .PP | |hash_murmur2(10, 5432) -> | |-5817877081768721676 | +-------------------------------------------+ | int ( number ) -> integer .PP | | integer | |. .PP int(5.4 + | |3.8) -> 9 | +-------------------------------------------+ | least ( number [, ... ] ) -> double if | |any argument is double, else integer | |.PP | | | | | | . | |.PP least(5, 4, 3, 2.1) -> 2.1 | +-------------------------------------------+ | ln ( number ) -> double .PP | | | |.PP ln(2.718281828459045) -> 1.0 | +-------------------------------------------+ | mod ( integer, integer ) -> integer | |.PP | | (Modulo) .PP | |mod(54, 32) -> 22 | +-------------------------------------------+ | permute ( i, size [, seed ] ) -> integer | |.PP | | | |i [0, size). | | i ( | | size) | | | | | | 0...size-1 | | seed | | | | . | |.PP permute(0, 4) -> an integer between 0 | |and 3 | +-------------------------------------------+ | pi () -> double .PP | | | |.PP pi() -> 3.14159265358979323846 | +-------------------------------------------+ | pow ( x, y ) -> double .PP power | |( x, y ) -> double .PP x | | y .PP pow(2.0, 10) -> | |1024.0 | +-------------------------------------------+ | random ( lb, ub ) -> integer .PP | | | | | | | |[lb, ub] | |. .PP random(1, | |10) -> an integer between 1 and 10 | +-------------------------------------------+ | random_exponential ( lb, ub, parameter ) | |-> integer .PP | | | | | | [lb, ub] | | | | | |. .PP | |random_exponential(1, 10, 3.0) -> an | |integer between 1 and 10 | +-------------------------------------------+ | random_gaussian ( lb, ub, parameter ) -> | |integer .PP | | | | | | [lb, ub] | | | | | |. .PP | |random_gaussian(1, 10, 2.5) -> an integer | |between 1 and 10 | +-------------------------------------------+ | random_zipfian ( lb, ub, parameter ) -> | |integer .PP | | | | | | [lb, ub] | | | | | |. .PP | |random_zipfian(1, 10, 1.5) -> an integer | |between 1 and 10 | +-------------------------------------------+ | sqrt ( number ) -> double .PP | | () | |.PP sqrt(2.0) -> 1.414213562 | +-------------------------------------------+ random . random_exponential random_gaussian random_zipfian (double) . o parameter parameter . : f(x) = exp(-parameter * (x - min) / (max - min + 1)) / (1 - exp(-parameter)) i min max ( ) : f(i) - f(i + 1). parameter min max . parameter 0 () . min parameter . parameter . o ( ) -parameter +parameter . . PHI(x) mu (max + min) / 2.0 : f(x) = PHI(2.0 * parameter * (x - mu) / (max - min + 1)) / (2.0 * PHI(parameter) - 1) i min max ( ) : f(i + 0.5) - f(i - 0.5). parameter min max . 1.0 / parameter 0.5 / parameter 2.0 / parameter 1.0 / parameter parameter 4.0 (1.0 / 4.0) ( 3.0 / 8.0 5.0 / 8.0) (2.0 / 4.0) ( ) . parameter 2.0 . o random_zipfian (Zipfian) . parameter . parameter . k k+1 ((k+1)/k)**parameter . random_zipfian(1, ..., 2.5) 1 (2/1)**2.5 = 5.66 2 (3/2)**2.5 = 2.76 3 . pgbench "Non-Uniform Random Variate Generation" Luc Devroye - Springer . parameter [1.001, 1000] . . permute (shuffle) . hash hash_murmur2 hash_fnv1a (seed) . :default_seed -D . permute . [0, size) (index) . :default_seed . permute (collision) . (modulo size) . . permute random_zipfian random_exponential . pgbench : \set size 1000000 \set r random_zipfian(1, :size, 1.07) \set k 1 + permute(:r, :size) : \set k1 1 + permute(:r, :size, :default_seed + 123) \set k2 1 + permute(:r, :size, :default_seed + 321) hash : \set size 1000000 \set r random_zipfian(1, 100 * :size, 1.07) \set k 1 + abs(hash(:r)) % :size hash (collision) . TPC-B : \set aid random(1, 100000 * :scale) \set bid random(1, 1 * :scale) \set tid random(1, 10 * :scale) \set delta random(-5000, 5000) BEGIN; UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid; SELECT abalance FROM pgbench_accounts WHERE aid = :aid; UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid; UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid; INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); END; . ( -- .) (Per-Transaction Logging) -l ( --aggregate-interval) pgbench . prefix.nnn prefix pgbench_log nnn (PID) pgbench . --log-prefix . -j (worker threads) . worker worker . worker prefix.nnn.mmm mmm worker . . : client_id (client session) transaction_no time script_no ( -f -b ) time_epoch (Unix-epoch timestamp) time_us schedule_lag ( --rate ) retries (serialization) (deadlock) ( --max-tries ) --rate --latency-limit time skipped . time failed . --failures-detailed time serialization deadlock ( Failures and Serialization/Deadlock Retries ). : 0 199 2241 0 1175850568 995598 0 200 2465 0 1175850568 998079 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663 --rate=100 --latency-limit=5 ( schedule_lag ): 0 81 4621 0 1412881037 912698 3005 0 82 6173 0 1412881037 914578 4304 0 83 skipped 0 1412881037 914578 5217 0 83 skipped 0 1412881037 914578 5099 0 83 4722 0 1412881037 916203 3108 0 84 4142 0 1412881037 918023 2333 0 85 2465 0 1412881037 919759 740 (. ) . (skipped) . ( retries ): 3 0 47423 0 1499414498 34501 3 3 1 8333 0 1499414498 42848 0 3 2 8358 0 1499414498 51219 0 4 0 72345 0 1499414498 59433 6 1 3 41718 0 1499414498 67879 4 1 4 8416 0 1499414498 76311 0 3 3 33235 0 1499414498 84469 3 0 0 failed 0 1499414498 84905 9 2 0 failed 0 1499414498 86248 9 3 4 8307 0 1499414498 92788 0 --failures-detailed time : 3 0 47423 0 1499414498 34501 3 3 1 8333 0 1499414498 42848 0 3 2 8358 0 1499414498 51219 0 4 0 72345 0 1499414498 59433 6 1 3 41718 0 1499414498 67879 4 1 4 8416 0 1499414498 76311 0 3 3 33235 0 1499414498 84469 3 0 0 serialization 0 1499414498 84905 9 2 0 serialization 0 1499414498 86248 9 3 4 8307 0 1499414498 92788 0 . --sampling-rate . (Aggregated Logging) --aggregate-interval . . : interval_start (Unix-epoch timestamp) num_transactions sum_latency sum_latency_2 min_latency max_latency sum_lag ( --rate ) sum_lag_2 ( --rate ) min_lag ( --rate ) max_lag ( --rate ) skipped ( --rate --latency-limit ) retried ( --max-tries ) retries ( --max-tries ) serialization_failures ( --failures-detailed ) deadlock_failures ( --failures-detailed ) : pgbench --aggregate-interval=10 --time=20 --client=10 --log --rate=1000 --latency-limit=10 --failures-detailed --max-tries=10 test 1650260552 5178 26171317 177284491527 1136 44462 2647617 7321113867 0 9866 64 7564 28340 4148 0 1650260562 4808 25573984 220121792172 1171 62083 3037380 9666800914 0 9998 598 7392 26621 4527 0 () . . (Per-Statement Report) -r pgbench : o (latency) -- . pgbench . o . / (Failures and Serialization/Deadlock Retries) . o . / (Failures and Serialization/Deadlock Retries) . --max-tries . . : starting vacuum...end. transaction type: scaling factor: 1 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 number of transactions per client: 1000 number of transactions actually processed: 10000/10000 number of failed transactions: 0 (0.000%) number of transactions above the 50.0 ms latency limit: 1311/10000 (13.110 %) latency average = 28.488 ms latency stddev = 21.009 ms initial connection time = 69.068 ms tps = 346.224794 (without initial connection time) statement latencies in milliseconds and failures: 0.012 0 \set aid random(1, 100000 * :scale) 0.002 0 \set bid random(1, 1 * :scale) 0.002 0 \set tid random(1, 10 * :scale) 0.002 0 \set delta random(-5000, 5000) 0.319 0 BEGIN; 0.834 0 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid; 0.641 0 SELECT abalance FROM pgbench_accounts WHERE aid = :aid; 11.126 0 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid; 12.961 0 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid; 0.634 0 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); 1.957 0 END; (PGOPTIONS='-c default_transaction_isolation=serializable' pgbench ...): starting vacuum...end. transaction type: scaling factor: 1 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 10 number of transactions per client: 1000 number of transactions actually processed: 6317/10000 number of failed transactions: 3683 (36.830%) number of transactions retried: 7667 (76.670%) total number of retries: 45339 number of transactions above the 50.0 ms latency limit: 106/6317 (1.678 %) latency average = 17.016 ms latency stddev = 13.283 ms initial connection time = 45.017 ms tps = 186.792667 (without initial connection time) statement latencies in milliseconds, failures and retries: 0.006 0 0 \set aid random(1, 100000 * :scale) 0.001 0 0 \set bid random(1, 1 * :scale) 0.001 0 0 \set tid random(1, 10 * :scale) 0.001 0 0 \set delta random(-5000, 5000) 0.385 0 0 BEGIN; 0.773 0 1 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid; 0.624 0 0 SELECT abalance FROM pgbench_accounts WHERE aid = :aid; 1.098 320 3762 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid; 0.582 3363 41576 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid; 0.465 0 0 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); 1.933 0 0 END; . (overhead) . TPS . . TPS . / (Failures and Serialization/Deadlock Retries) pgbench : o . pgbench . : o pgbench ( ) o ( ) o ( ) o pgbench ( ..) o ( / ). . --exit-on-abort . o . pgbench ( ..) --exit-on-abort pgbench . ( ). pgbench . . SQL . SQL . (rollback) ( <<>> pgbench (What Is the "Transaction" Actually Performed in pgbench?) ). rollback ( --max-tries ) / ( --latency-limit ) / ( --time ) . . (Note) --max-tries . (--max-tries=0) --latency-limit . --time . : . (shell) . SQL (roll back ) \setshell . (rollbacks) . . . --max-tries : . . --max-tries . --failures-detailed . ( ) / --verbose-errors . (Table Access Methods) (Table Access Method) pgbench . PGOPTIONS PostgreSQL ( Section 19.1.4 ). pgbench wuzza : PGOPTIONS='-c default_table_access_method=wuzza' (Good Practices) pgbench . . . -t -T . . . TPC-B (-s) (-c) (update contention) . pgbench_branches -s -c -s . : (dead rows) . (vacuuming) . autovacuum . pgbench (bottleneck) . pgbench (low network latency) . pgbench . (Security) (secure schema usage pattern) pgbench . pgbench (unqualified names) (search path) . PostgreSQL 18.6 2026 PGBENCH(1)