COST 계산에 이용되는 파라미터 / 통계 정보
IO 비용 계산을 위한 파라미터
▪ seq_page_cost
✓ Seq Scan 방식으로 1 블록을 읽는 비용
▪ random_page_cost
✓ Index Scan 방식으로 1 블록을 읽는 비용
✓ 인덱스 Root 블록과 Branch 블록을 제외
CPU 비용 계산을 위한 파라미터
▪ cpu_tuple_cost
✓ Seq Scan 수행 시에 1개 레코드를 액세스하는 비용
▪ cpu_index_tuple_cost
✓ Index Scan 수행 시에 1개 레코드를 액세스하는 비용
▪ cpu_operator_cost
✓ 레코드 1개를 필터 처리하는 비용
Seq Scan 비용 계산
✓ 매우 단순한 방식으로 계산함
COST=
SELECT relpages * current_setting('seq_page_cost')::float +
reltuples * current_setting('cpu_tuple_cost')::float +
reltuples * current_setting('cpu_operator_cost')::float
FROM pg_class WHERE relname='t1';
통계 정보
통계 정보 생성 단위
✓ 데이터베이스, 테이블, 칼럼 레벨로 통계 정보 생성 가능
✓ 스키마, 인덱스 레벨은 지원하지 않음
통계 정보 수동 생성 방법
▪ 데이터베이스 레벨: analyze;
▪ 테이블 레벨: analyze {테이블명};
▪ 칼럼 레벨: analyze {테이블명} {(칼럼명)..};
주요 통계 정보 확인
Autovacuum이 자동으로 통계 정보를 갱신하는 기준
▪ 아래의 파라미터를 이용해서 통계 정보를 갱신한다
▪ 테이블 별 설정도 가능하다.