#greenplum sql 튜닝 파라미터 정리 (쿼리 튜닝 parameter)
안녕하세요.
greenplum database는 오라클처럼 힌트를 사용할 수 없습니다.
그렇다고 느린 쿼리 성능을 그냥 GPORCA 가 시키는 데로 쿼리가 수행되게끔 둘 수는 없죠.
gpdb의 파라미터값을 조절하여 쿼리의 성능을 향상할 수 있습니다.
아래에 정리 되어 있는 파라미터 값을 참고하여 최적의 성능으로 GPDB를 사용하세요.
- gp_workfile_compress_algorithm=none # default 값은 none 이며, zlib 일 경우에는 pgsql_tmp 사용 시
압축 모드로 사용하기 때문에 동시 사용자수가 높을 경우에 적용할 필요가 있음.
- statement_mem # default 값은 125MB이며, 2GB까지 설정 가능하나, 안정적인 측면에서
1900MB까지 적용 가능
* 대용량 쿼리일 경우 1900MB 까지 높이는 것이 성능 향상
* OLTP 성과 같이 short 쿼리일 경우 32MB으로 낮추는 것이 성능 향상
- random_page_cost : default 값은 1000이며, 인덱스를 사용하기 위해서는 0, 1으로 세팅하여, Index
Scan을 유도
- enable_nestloop : default 값은 off이며, nestloop join 이 필요할 경우 on으로 설정
- join_collapse_limit : default 값은 20이며, 조인이 많을 경우 성능 지연 현상 발생, 플랜 생성 시 많은
시간이 소요. 쿼리 플랜 작성 시 파라미터 값을 8부터 1 씩 증가시키면서 플랜 생성 소요시간이 갑자기
많이 드는 값을 기준으로 설정하면 대부분 맞음.. 쿼리 cost 가 처음으로 낮아지는 값
- gp_external_max_segs : default 64, 작은 테이블 로딩이 많을 경우 16 또는 32으로 줄임, 작은
사이즈가 많을 경우 초기 로딩 속도를 줄이기 위함, 대용량 데이터를 적재하기 위해서는 128 또는
상향으로 늘림.
- gp_connections_per_thread : default 64, Short 쿼리 수행 속도를 올리기 위해서는 1로 내림, 숫자가
낮을수록 마스터 노드의 리소스를 더 많이 사용하며, Database 설정보다는 유저별 설정을 권고
- gp_vmem_idle_resource_timeout : default 18 초, 세션 레벨에서 메모리 누적으로 발생되어, Out of
Memory 가 발생되는 경우, 1ms로 줄임. (세그먼트 노드의 리소스 Free 하기 위한 시간)
Set enable_nestloop = on; # Default 설정은 hash이며, nestloop는 off로 되어 있음.
'Database > GPDB with BIG_data' 카테고리의 다른 글
[gpdb 백업] pg_dump & pg_restore 간단 사용법 (0) | 2020.02.21 |
---|---|
[GPDB] 실시간 빅데이터 처리 DBMS 비교 Firebase Realtime Database vs GPDB (0) | 2020.01.09 |
[greenplum]GPDB sequence cycle (0) | 2018.08.19 |
greenplum GPDB download 방법 (sandbox) (1) | 2018.08.17 |
GPDB 에서 linux shell script를 이용하여 partition table 생성 하기 (0) | 2018.08.17 |