로딩
요청 처리 중입니다...

[PostgreSQL] 슬로우 쿼리 Parallel Seq Scan

 [PostgreSQL] 슬로우 쿼리 Parallel Seq Scan

스테이징 환경(운영과 DB 분리)에서 통합 테스트를 진행하러 해당 메뉴를 찾아가던 와중 로딩이 끝나지 않는 페이지를 발견했습니다. 정확히는 20초가량 로딩 후 데이터가 조회되었는데 품목 목록을 조회하는 페이지였습니다.

데이터가 아무리 많다고 해도 이건 이상하다 싶어서 API를 바로 확인했고, 쿼리에 문제가 있는 걸 확인했습니다. 단순 품목 목록 조회인 줄 알았으나 이번에 기능이 추가되었다고 합니다.

매입매출 전표에서 사용한 품목이면 가장 마지막에 사용된 매입단가, 매출단가를 가져오는 것. 해당 쿼리에서는 Parallel Seq Scan이 두 번 발생하고 있었고, 슬로우 쿼리의 주된 원인이 되었습니다.

Parallel Sequential Scan이란? PostgreSQL이 큰 테이블을 빠르게 읽기 위해 여러 워커 프로세스를 생성하여 병렬로 나눠 읽는 방식입니다.

워커 프로세스는 테이블 크기에 따라 자동으로 계산하여 생성합니다. 출처 : https://postgrespro.com/blo...