데이터베이스 워크로드는 빠른 트랜잭션의 OLTP와 대규모 데이터 분석의 OLAP으로 구분됩니다. 최근 실시간 분석 요구로 이 둘이 혼합된 하이브리드 트랜잭션/분석 처리(HTAP) 환경이 확산되면서, 분석 쿼리가 운영 시스템 자원을 과도하게 사용하여 전반적인 성능 저하를 초래합니다.
주요 최적화 기법은 다음과 같습니다:
* 설정 매개변수 조정: max_connections
제한 및 분석 워크로드용 별도 연결 풀 활용으로 리소스 경합을 줄입니다. work_mem
은 쿼리 작업 메모리 할당을 제어하며, 복잡한 쿼리를 위해 특정 세션에서 높은 값을 설정할 수 있습니다. statement_timeout
은 장기 실행 쿼리가 운영 시스템에 미치는 영향을 제한합니다.
* 인덱싱 전략: 분석 쿼리 성능 향상을 위해 특화된 인덱스를 생성하며, 쿼리 내 함수나 표현식에 함수 기반 인덱스를 활용합니다. 인덱스 추가가 OLTP 작업에 미치는 영향을 고려해야 합니다.
* 데이터 사전 처리: GENERATED ALWAYS AS
컬럼으로 데이터 삽입 시 값을 미리 계산하여 저장, 쿼리 시 계산 부하를 줄입니다. MATERIALIZED VIEW
(구체화된 뷰)는 쿼리 결과를 물리적으로 저장하여 빠른 조회를 가능하게 하며, 데이터 실시간성이 중요하지 않은 분석 보고서에 특히 유용합니다. 뷰에 인덱스를 추가하고 주기적으로 새로고침하여 효율성을 높입니다.
* 워크로드 분리: 분석 워크로드를 주 데이터베이스에서 분리하는 것이 가장 효과적입니다. 물리적 복제를 통해 주 데이터베이스의 읽기 전용 복사본을 분석용으로 활용하거나, 논리적 복제를 통해 특정 객체만 복제하고 복제된 데이터베이스에서 분석에 최적화된 설정을 자유롭게 적용하여 유연성을 확보할 수 있습니다.