avicom의 신변잡기

PG Bench 사용법 본문

PGSql

PG Bench 사용법

avicom 2007. 8. 28. 18:09
- pgbench -

pgbench는 PostgreSQL의 성능 테스트를 위해만들어진 BechMark Tool입니다.
기본설치는 되지않으면 PostgreSQL의 Contrib 폴더에 pgbench 폴더가 있습니다.

해당 폴더에서 make ; make install 만드렁 PostgreSQL 설치 위치에 bin 디렉에 조용히 이사를 하게 됩니다.

*주의 * : 소스 풀자마자 하는건 않됩니다. 해당 PostgreSQL에서 ./configure 과 make 단계까지는 거쳐주어야
pgbench의 Makefile에서 참조가 가능하므로 잊지마시고 않된다고 질문 올리시는 일 없으시길.

- pgbench 사용을 위한 옵션들 -

인용 또는 결과 :

-h : 호스트명.,서버의 위치가 같은 서버가 아니거나 특정 IP로 잡혀있으면 사용
-p : PostreSQL의 서버 기본 포트인 5432가 아닌 다른 포트로 두셨다면 사용
-i : 테스트전에 PostgreSQL의 디비에 대한 vaumming 작업을 하게끔하는것으로 테스트전이나 2번째 테스트전에 해주는것이
     최적상태일때의 결과를 알아보는데 좋습니다.

-c : 동시 접속 Client 갯수
-t : Client당 Transaction 개수로 -c 옵션 주신거에 -t 옵션 갯수를 곱하면 최종 서버에 테스트를 위한 트랜잭션 개수임
-s : 테스트용 튜플(결과용데아타)의 갯수 기본 100개 (튜플 총개수는 설정값 * 100,000 입니다)
-U : 로그인용 유저명
-P : 접속 패스워드
-n : vauumdb 를 실행하지않고 그냥 테스트 돌입
-v : -i는 단독형 옵션으로 최적화와 테스트 준비를 하고 -v는 연속으로 테스트 옵션과 함께 쓰는것으로 바로 vauumdb후 테스트 돌임.
-S : TPC-B 테스트에 대해 select Performance 테스트를 한다
-C : Establish connection 개수
-l : 테스트 결괄르 저자할 로그파일 위치 저장
-d : 디버깅 모드 On , 테스트 과정을 자세히 알고 싶으시면 옵션을 쓰시면 됩니다.

[root@good /root]$ _


- pgbench 테스트 하기 -

/database/postgres/bin/pgbench -U postgres -P 9999 -i openphp

위 옵션을 
-U postgres : postgres 유저로 접속
-P 9999 : 999 포트로 접속 즉 pgpool로 접속
-i : 테스트준비
openphp : openphp디비를 이용하겠다는 겁입니다.

인용 또는 결과 :

creating tables...
10000 tuples done.
20000 tuples done.
30000 tuples done.
40000 tuples done.
50000 tuples done.
60000 tuples done.
70000 tuples done.
80000 tuples done.
90000 tuples done.
100000 tuples done.
set primary key...
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "branches_pkey" for table "branches"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
vacuum...done.

[root@good /root]$ _


createing tables..음 뭔가 내 디비에 만들어 넣었군.  디비에 접속해보면 다음의 테이블이 생성되어 있습니다.

    accounts 
    branches 
    history  
    tellers  


이제 준비를 했으니 테스트를 해야 겠죵.

pgbench -U postgres -p 9999 -S -c 10 -t 10000  openphp

위 옵션을 풀이하면 postgres 유저로 로그인하고 9999번 포트 즉 pgpool을 통해 접속 -S TPC-B 기준으로 테스트해서
tps 결과를 얻겠다는. -c 동시 연결 Client 는 10명 트랜잭션을 10,000개 로 하겠다는 것입니다.

잠깐! :  TPC-B란?
http://kr.itdic.yahoo.com/cat/09/content/2369.html
참고 :  저의 수치는 디폴트가 아닌 현재 다른 데몬들이 돌고 있기때문에 수치 정확치 않으니 참고만 하셔요[/b]

* TPC-B tps 수치 (Select Only)*
인용 또는 결과 :

starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
number of clients: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
tps = 2222.125782 (including connections establishing)
tps = 2227.139201 (excluding connections establishing)

[root@good /root]$ _


* TPC-B tpl 수치 (종합이라 꽤 오래 걸립니다. 음... 담배 한대 피장)[-S를 뺀 결과]*
인용 또는 결과 :

transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
tps = 240.803519 (including connections establishing)
tps = 240.985555 (excluding connections establishing)

[root@good /root]$ _


위와 같이 pgbench를 이용해서 테스트를 할수 있습니다. 성능의 점검과 각종 옵션에 대해 테스트를 할수 있습니다.
출처 : http://www.openphp.com