PostgreSQL

PostgreSQL 성능 관련 옵션

남용2 2019. 11. 22. 15:15

autovacuum_max_workers

CPU의 코어수가 많은 경우 사용가능

기본값은 0

동시에 작업을 수행 할 수 있도록 코어 수와 동일한 값으로 설정하면 좋음

해당 매개 변수와 함께 multiple_autovacuum_workers를 설정해야 함

이 값은 코어의 1/2보다 큰 값으로 설정

autovacuum_vacuum_scale_factor

Vacuuming은 삭제 및 삽입으로 생성된 dead tuples를 제거하는 프로세스

지정된 임계 값에 따라 테이블을 자동으로 vacuuming 함

effective_cache_size

캐시할 수 있는 메모리 양이 증가

값이 클수록 데이터베이스에서 index를 더 많이 사용함

권장값은 RAM 값의 50% 이상

maintenance_work_mem

vacuuming, 인덱스 생성, 외래 키 확인을위한 유지 보수에 사용

대형 데이터베이스의 경우 256MB에서 1GB 정도로 값을 설정

max_connection

너무 많은 연결로 인한 성능 저하를 막기 위해 연결 수를 제한하기위함

기본값은 100

값을 너무 높게 설정하면 대기 시간이 길어짐

random_page_cost

기본값은 random_page_cost = 4.0 및 seq_page_cost = 1.0

shared_buffer

많은 동시 쿼리를 사용 하거나 웹 응용 프로그램이나 OLAP와 같은 많은양의 CPU를 사용하는 경우 더 많은 버퍼가 필요

일반적으로 RAM의 1/4 또는 effective_cache_size의 3/4

그러나 1/4는 small machine에서는 너무 낮을 수 있고 big machine에서는 너무 높을 수 있으므로 1/4로 시작해서 다른 값을 시도하여 적절할 값을 찾아야 함

synchronous_commit

기본 구성을 사용하면 success response가 클라이언트에 리턴 된 후 commit이 이루어짐

이 매개 변수를 on으로 설정하면 success message 수신 여부와 상관없이 데이터베이스 서버에서 커밋이 발생합니다.

일반적인 권장 사항은 안전을 위해 off로 설정

(min, max)_wal_size

최소 1GB로 만들고 최대 수 GB를 50 - 100GB

max_wal_size의 이점을 얻으려면 checkpoint_timeout을 늘려야 함

work_mem

정렬 및 조인과 같은 작업에 사용되는 최대 로컬 프로세스 메모리를 결정

최적의 값은 OLTP, OLAP 및 DW에 따라 크게 다를 수 있음

swapping으로 인해 임시 파일을 로깅하면 work_mem 값이 충분하지 않다는 것을 의미함