PostgreSQL은 단순히 데이터를 저장하고 조회하는 도구를 넘어, 그 자체가 “스캔”이라는 미학을 구현한다. 데이터베이스 내부에서 일어나는 스캔 과정은 마치 사진작가가 빛과 그림자를 조절하며 장면을 완성하듯, 인덱스와 테이블 사이의 협업으로 최적화된 경로를 찾아낸다.
인덱스를 사용하면 포인터만으로도 필요한 행에 바로 접근할 수 있지만, 실제 세계에서는 모든 데이터가 무작위로 분포한다. PostgreSQL은 이 복잡성을 정리해주는 “스캔” 메커니즘을 제공한다. 가장 흔한 것은 Sequential Scan(순차 스캔)이며, 이는 테이블 전체를 한 줄씩 읽어 들여야 할 때 사용된다. 데이터 양이 적거나 인덱스가 비효율적일 경우 순차 스캔은 가장 직관적인 선택이다.
반면에 Index Scan(인덱스 스캔)은 특정 조건을 만족하는 행만 골라서 가져온다. 이는 마치 정밀한 카메라 렌즈를 통해 특정 피사체만 포착하듯, 필요없는 부분은 무시하고 핵심 데이터만 선별한다. 하지만 인덱스를 만들 때는 그 비용도 함께 고려해야 한다. 인덱스가 많아질수록 INSERT, UPDATE, DELETE 시에 업데이트 비용이 증가하기 때문이다.
PostgreSQL의 Query Planner는 이러한 스캔 옵션 중 가장 효율적인 경로를 판단해 주는데, 여기서 “비용”이라는 개념은 단순히 CPU와 I/O를 넘어서 비즈니스 로직과 사용자 경험까지 연계한다. 예컨대, 대규모 OLAP 환경에서는 순차 스캔이 빠를 수 있지만, 실시간 서비스에서는 인덱스 스캔이 더 적합하다. 이러한 판단은 데이터베이스가 데이터를 바라보는 시각을 결정짓는다.
또한, “Bitmap Scan”과 같은 하이브리드 기법은 인덱스를 이용해 잠재적 행들을 먼저 마킹하고, 그 뒤에 순차 스캔으로 실제 데이터를 가져온다. 이는 두 방식의 장점을 동시에 활용하려는 시도이며, 데이터베이스가 자원을 효율적으로 사용하도록 돕는다.
이처럼 PostgreSQL은 단순한 저장소를 넘어 “스캔”이라는 예술적 접근을 통해 데이터에 새로운 의미를 부여한다. 스캔의 선택과 최적화는 데이터베이스 설계자가 데이터와 대화를 나누는 방식이며, 그 결과가 시스템 전체의 성능과 안정성을 좌우한다.
자세한 구현 원리와 사례를 더 알고 싶다면 아래 링크를 참고하라.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.