-s 50 - koefitsent, mis määrab andmete hulga tabelites. 50 tähendab, et tabelis
on 5 miljonit rida. 100 tähendaks, et selles tabelis oleks 10 miljonit rida.
-F <arv> - vaikimisi luuakse tabelid FILLFACTOR väärtusega 100. See võti võimaldab määrata, millist FILLFACTOR väärtust tuleks selle asemel kasutada
--foreign-keys - loodavas andmebaasis tuleb ka defineerida välisvõtme kitsendused. Vaikimisi neid ei looda.
pgbench -c 1 -T 180 -b tpcb-like example4
- c 1 - kui mitu klienti andmebaasis samaaegselt tehinguid käivitavad. Vaikimisi 1. See tähendab, et ei teki konflikte erinevate klientide andmemuudatuste vahel.
- T 180 - täida tehinguid 180 sekundit. Alternatiiviks oleks kasutada -t omadust ja määrata käivitatavate tehingute arv. Määrata saab ühe või teise, kuid mitte mõlemat korraga.
-b tpcb-like - käivita programmi sisse ehitatud tehingut
tpcb-like. Seal on kolm UPDATE lauset 1 SELECT ja 1 INSERT lause. Need laused leiab
dokumentatsioonist.
Vastus esimese käsu korral
pgbench (17.2 (Ubuntu 17.2-1.pgdg22.04+1))
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 50
query mode: simple
number of clients: 1
number of threads: 1
maximum number of tries: 1
duration: 180 s
number of transactions actually processed: 118363
number of failed transactions: 0 (0.000%)
latency average = 1.521 ms
initial connection time = 10.513 ms
tps = 657.581951 (without initial connection time)
Number of transactions actually processed näitab täidetud tehingute arvu,
latency average näitab keskmist tehingu täitmise aega ning tps (
transactions per second) tehingute arvu sekundis.
Tulemused
FILLFACTOR 100
number of transactions actually processed: 118363
latency average = 1.521 ms
tps = 657.581951 (without initial connection time)
FILLFACTOR 90
number of transactions actually processed: 121877
latency average = 1.477 ms
tps = 677.133722 (without initial connection time)
FILLFACTOR 80
number of transactions actually processed: 125312
latency average = 1.436 ms
tps = 696.213099 (without initial connection time)
FILLFACTOR 70
number of transactions actually processed: 130279
latency average = 1.382 ms
tps = 723.808714 (without initial connection time)
FILLFACTOR väärtuse vähendamisel oli tulemus parem - tehingu täitmiseks kulus keskmiselt vähem, sekundis toimus rohkem tehinguid ja kokku toimus rohkem tehinguid. Samas tuleb aru saada, et katsetatud stsenaariumis käivitati väga lühikese ajaga väga palju UPDATE lauseid. Kui UPDATE lauseid käivitatakse harvem, siis võib FILLFACTOR olla suurem (nt 90).
Tabeli väiksema FILLFACTOR väärtuse tulemuseks on see, et tabeli plokkides on rohkem vaba ruumi, tabeli andmete salvestamiseks kulub rohkem plokke ning kokkuvõttes on andmebaas suurem.
Vaatasin loodud andmebaaside suurust enne katsetuste algust sellise päringuga:
SELECT pg_size_pretty(pg_database_size('__siia_andmebaasi_nimi__'));
example1 (FILLFACTOR 100): 755MB
example1 (FILLFACTOR 90): 825MB
example1 (FILLFACTOR 80): 912MB
example1 (FILLFACTOR 70): 1023MB