프로젝트 목록
SQL 성능·트랜잭션 실습 · 쿼리와 결과 리포트 · 2026

PostgreSQL Lab

인덱스·페이지네이션별 SQL을 작성해 실행계획을 비교하고, 별도 세션에서 격리 수준 차이와 데드락을 실험했습니다. PostgreSQL 학습 환경의 쿼리·트랜잭션 분석입니다.

PostgreSQLSQLEXPLAIN ANALYZEB-tree IndexTransactions
OVERVIEW

프로젝트 소개

통신 사용량을 가정한 테이블과 테스트 데이터를 만들고, 같은 조회를 단일·복합·커버링 인덱스에서 비교했습니다. 조건식과 정렬, 페이지 접근 방식이 실행계획을 어떻게 바꾸는지 기록했습니다.

별도 세션에서는 READ COMMITTED와 REPEATABLE READ를 비교하고, 서로 다른 순서로 행을 잠가 데드락을 재현했습니다. 조회 성능과 동시 변경을 함께 살펴본 학습 프로젝트입니다.

MY CONTRIBUTION

담당한 구현

01

테스트 데이터와 실행계획 비교

generate_series로 1천만 행을 만드는 SQL과 EXPLAIN ANALYZE 조회를 작성했습니다. 고객 조건·날짜 범위·정렬 컬럼을 중심으로 단일, 복합, INCLUDE 커버링 인덱스를 비교한 리포트를 남겼습니다.

02

조건식과 페이지 접근 방식 점검

날짜에 함수를 적용한 조건을 범위 조건으로 바꾸는 실험과 페이지네이션 비교를 수행했습니다. 단일 인덱스로 더 느려진 경우도 기록해 인덱스 유무만으로 결과를 판단하지 않았습니다.

03

격리 수준과 교착 상태 실습

READ COMMITTED와 REPEATABLE READ를 비교하고, 두 세션의 UPDATE 순서를 바꿔 40P01 데드락 사례를 기록했습니다. 같은 순서로 잠금을 획득하는 방식으로 회피 원리를 정리했습니다.

ENGINEERING STORY

인덱스를 추가했는데 조회가 더 느려진 이유

결과

리포트에는 전체 탐색 459.707ms, 단일 인덱스 544.617ms, 복합 인덱스 74.155ms, 커버링 인덱스 3.482ms가 기록돼 있습니다. 이는 학습 환경의 측정 기록이며 실서비스 성능 수치가 아닙니다.

문제

수업 리포트에서 단일 인덱스를 추가한 조회가 전체 탐색보다 느려지는 결과를 확인했습니다.

접근

검색 조건·범위 조건·정렬에 맞춰 복합 인덱스를 구성하고 조회 컬럼을 INCLUDE에 포함한 커버링 인덱스를 비교했습니다. 실행계획이 달라지는 이유와 결과를 함께 정리했습니다.

DELIVERED WORK

구현 결과

  • 1천만 행 테스트 데이터 생성 SQL
  • EXPLAIN ANALYZE · 복합·커버링 인덱스 비교
  • 격리 수준 비교와 40P01 데드락 재현 기록

표시된 성능 수치는 당시 학습 환경에서 측정한 결과입니다.

다음 프로젝트Pathfinding & Terrain Analysis