PostgreSQL Uzaktan 벤치마크 Testi
Başlamadan önce yazıyı yazarken tasarladığım ortamın hangi elemanlardan oluştuğundan bahsetmekte fayda var.
Öncelikle eğer yedekli bir yapımız olmasaydı nasıl 벤치마크 testi yapabileceğimizden bahsedebiliriz. Bunun için tek bir gereksinimimiz bulunmakta, o da
postgresql-contrib
파케티. PostgreSQL kurulu debian tabanlı bir sunucuda aşağıdaki gibi bağımlılığımızı kuralım.sudo apt install postgresql-contrib
Bu paket ile beraber
pgbench
komutu kullanıma hazır hale gelmiş oluyor. Doğru kurulduğunu görmek için aşağıdaki gibi yardım parametresini çalıştırabiliriz.zeki@kubuntu21:~$ pgbench --help
pgbench is a benchmarking tool for PostgreSQL.
Usage:
pgbench [OPTION]... [DBNAME]
Initialization options:
-i, --initialize invokes initialization mode
-I, --init-steps=[dtgGvpf]+ (default "dtgvp")
run selected initialization steps
-F, --fillfactor=NUM set fill factor
-n, --no-vacuum do not run VACUUM during initialization
-q, --quiet quiet logging (one message each 5 seconds)
-s, --scale=NUM scaling factor
--foreign-keys create foreign key constraints between table
.
..
....
Komutumuzun çalıştığından emin olduktan sonra işlemlerimize başlayabiliriz.
1. Pgbench için gerekli tabloları initalize etmek
Pgbench'i kullanmadan önce -i parametresi ile aşağıdaki gibi initalize edelim.
sudo -u $DATABASE_USER pgbench -i -p $DATABASE_PORT -d $DATABASE_NAME
sudo -u postgres pgbench -i -p 5432 -d postgres
dropping old tables...
NOTICE: table "pgbench_accounts" does not exist, skipping
NOTICE: table "pgbench_branches" does not exist, skipping
NOTICE: table "pgbench_history" does not exist, skipping
NOTICE: table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
100000 of 100000 tuples (100%) done (elapsed 0.42 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 3.90 s (drop tables 0.01 s, create tables 0.69 s, client-side generate 0.72 s, vacuum 0.48 s, primary keys 2.01 s).
2. Pgbench'i çalıştırmak
Pgbench testimizi aşağıdaki gibi başlatabiliriz.
sudo -u $DATABASE_USER pgbench -c $CLIENT_NUM -j $JOB_NUM -t $TRANSACTION_NUM -d $DATABASE_NAME > benchmark.results
Yukarıda verilen formattaki parametreleri anlamak, yapacağımız test için de önemli olacağından öncelikle bunları anlayalım.
$DATABASE_USER : Veri tabanı kullanıcısı, varsayılan bir veri tabanında işlem yapmak için postgres kullanılabilir.
$CLIENT_NUM : Benchmark sırasında çalışacak eşzamanlı veritabanı sayısı.
$JOB_NUM : Benchmark sırasında çalışacak thread sayısı.
$TRANSACTION_NUM : Her bir clientın yapacağı transaction sayısı.
$DATABASE_NAME : Benchmark yapılacak veri tabanı adı, varsayılan veri tabanında işlem yapmak için postgres kullanılabilir.
Yukarıda yer alan formata göre örnek bir 벤치마크 çalıştırdığımızda aşağıdaki gibi görünecektir.
sudo -u postgres pgbench -c 2 -j 2 -t 100 -d postgres > benchmark.results
Password:
pgbench: pghost: 10.0.x.5 pgport: 5432 nclients: 3 nxacts: 100 dbName: postgres
starting vacuum...end.
pgbench: client 0 executing script "<builtin: TPC-B (sort of)>"
pgbench: client 0 executing \set aid
pgbench: client 5 executing script "<builtin: TPC-B (sort of)>"
pgbench: client 5 executing \set aid
pgbench: client 0 executing \set bid
pgbench: client 0 executing \set tid
pgbench: client 5 executing \set bid
.
..
...
İşlem tamamlandığında aşağıdaki gibi bir log dosyası üretilecektir. Bu dosya içerisinde yer alan bilgiler 벤치마크 testimizin sonuçlarını ifade etmektedir. Benim kullandığım basic sistem için veriler aşağıda yer almaktadır.
pgbench (14.2 (Debian 14.2-1.pgdg110+1))
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 2
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average = 71.099 ms
initial connection time = 9.067 ms
tps = 28.129593 (without initial connection time)
Yukarıdakilere ek olarak pgbench parametrelerine yalnızca HAProxy ip adresi ve postgresql portunu eklemek yeterlidir. Aşağıdaki gibi çalıştırılabilir.
sudo -u postgres pgbench -c 2 -j 2 -t 100 -d postgres -h 10.0.x.5 -p 5000 > benchmark.results
Password:
pgbench: client 0 receiving
pgbench: client 2 executing \set aid
pgbench: client 2 executing \set bid
pgbench: client 2 executing \set tid
pgbench: client 1 receiving
pgbench: client 2 executing \set delta
pgbench: client 2 sending BEGIN;
pgbench: client 1 sending INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (6, 1, 73134, 4493, CURRENT_TIMESTAMP);
pgbench: client 1 receiving
pgbench: client 2 receiving
pgbench:pgbench: client 1 receiving
.
..
...
Çıktı olarak aşağıdaki gibi bir sonuç görebiliriz.
pgbench (14.4 (Ubuntu 14.4-0ubuntu0.22.04.1), server 14.2 (Debian 14.2-1.pgdg110+1))
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 2
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average = 48.882 ms
initial connection time = 15.425 ms
tps = 40.914923 (without initial connection time)
Reference
이 문제에 관하여(PostgreSQL Uzaktan 벤치마크 Testi), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aciklab/postgresql-uzaktan-benchmark-testi-10a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)