ᇂ1. 데이터베이스 성능이란
일반적으로 tps 초당 트랜잭션 수로 이야기함
문제는 트랜잭션의 정의가 모호함
2. PostgreSQL & pgbench
pgbench 는 기본적으로 tpc-b type 트랜잭션을 제공함
tpc-b type은 클라이언트 - 서버 환경의 구시대 유물이 되었음
3. 아직도 pgbench 가 중요한 이유
그럼에도 불구하고, 데이터베이스 서버가 운영되고 있는 호스트의 하드웨어 사양과
postgresql.conf 설정을 최적의 상태로 만들어 갈 지표를 찾는데, 이주 편한 도구 임
4. 작업 방법
최대 288 클라이언트까지 테스트할 계획임으로
pgbench -i -s 500 으로 자료를 초기화함
pgbench -T 600 -c 클라이언트수 -j 쓰레드수
형태로 클라이언트수와 쓰레드수를 동일하게 해서
해당 호스트의 core 수의 배수로 600초 (5분) 동안 부하를 주고 그 결과를 수집함
for i in `seq 8 8 288`
do
pgbench -T 600 -c $i -j $i > $i.result
done
grep '.....' *.result
5. gnuplot으로 차트 만들기
set title 'pgbench -T 600'
set grid
set terminal png size 640, 480
set output 'pgbench.png'
set xlabel 'clients' x,y
set ylabel 'tps' x,y
plot 'pgbench.result' with lines title '9.5', 'pgbench.result' using 1:3 with lines title '9.4', 'pgbench.result' using 1:4 with lines title '9.5'
6. 차트 읽기
해당 검사에서 최대 성능을 냈던 구간은 모든 버전에서 56-72 구간임
즉, 8 core 환경에서 코어 당 8배 정도의 클라이언트를 수용할 때 최적의 성능을 냄을 알 수 있음(tpc-b 타입 트랜잭션인 경우)
7. 그 외 빠진 이야기
해당 작업은 반드시 OS 모니터링도 함께 진행되어야 함
CPU, 메모리, 디스크I/O, 네트워크 I/O도 함께 봐야 함
8. 마무리
전체적으로 PostgreSQL 버전별 tps 값은 9.5가 제일 낮았음.
병목 구간에서는 일정하게 각 버전별로 성능 차이가 있음
해당 차트로 짤 수 있는 전략
해당 DB 서버로는 최대 100 이하의 클라이언트가 동시에 사용할 수 있도록 하는 것이 최적임
(검사 장비의 하드웨어 사양은 8core, 16G Mem, 10G iscsi HDD)
posted by 김상기
'2. DBMS이야기 > 01. PostgreSQL' 카테고리의 다른 글
PGCon 2016 참관기 (0) | 2016.05.24 |
---|---|
pgcrypto 확장 모듈을 이용한 oracle DBMS_CRYPTO 패키지 이용하는 함수들 마이그레이션 (1) | 2016.03.28 |
postgresql 처리 순서도 (1) | 2014.12.01 |
훨씬 간편해진 Postgres 백업과 복구 (0) | 2014.11.27 |
PostgreSQL PPAS Streaming Replication (0) | 2014.11.26 |