테스트 데이터와 실행계획 비교
generate_series로 1천만 행을 생성하는 SQL과 EXPLAIN ANALYZE 조회를 작성했습니다. 고객·날짜 범위·정렬 컬럼을 기준으로 단일·복합·INCLUDE 커버링 인덱스를 비교하고 결과를 보고서에 남겼습니다.
SQL 기초를 익히며 인덱스와 페이지네이션에 따른 실행계획을 비교했습니다. PostgreSQL 수업 실습에서 격리 수준의 차이를 확인하고 데드락을 재현했습니다.
통신 사용량을 가정한 테이블과 테스트 데이터를 만들었습니다. 같은 조회에 단일·복합·커버링 인덱스를 적용하고, 조건식·정렬·페이지네이션 방식에 따라 실행계획이 어떻게 달라지는지 기록했습니다.
별도 세션에서 READ COMMITTED와 REPEATABLE READ를 비교하고, 행을 서로 다른 순서로 잠가 데드락을 재현했습니다. 조회 성능과 함께 여러 세션이 데이터를 바꿀 때 생기는 문제를 실습했습니다.
generate_series로 1천만 행을 생성하는 SQL과 EXPLAIN ANALYZE 조회를 작성했습니다. 고객·날짜 범위·정렬 컬럼을 기준으로 단일·복합·INCLUDE 커버링 인덱스를 비교하고 결과를 보고서에 남겼습니다.
날짜에 함수를 적용한 조건을 범위 조건으로 바꾸고 페이지네이션 방식도 비교했습니다. 단일 인덱스를 추가했는데 더 느려진 경우를 기록하고 실행계획을 확인했습니다.
READ COMMITTED와 REPEATABLE READ를 비교했습니다. 두 세션의 UPDATE 순서를 바꿔 40P01 데드락을 재현하고, 같은 순서로 잠금을 획득하면 피할 수 있는 이유를 정리했습니다.
당시 보고서에 전체 탐색 459.707ms, 단일 인덱스 544.617ms, 복합 인덱스 74.155ms, 커버링 인덱스 3.482ms를 기록했습니다. 학습 환경에서 측정한 값으로 실서비스 성능을 의미하지는 않습니다.
수업 실습에서 단일 인덱스를 추가한 조회가 전체 테이블을 탐색할 때보다 느린 결과를 확인했습니다.
검색 조건·날짜 범위·정렬에 맞춰 복합 인덱스를 만들었습니다. 조회 컬럼을 INCLUDE에 넣은 커버링 인덱스와 비교하고, 실행계획이 달라진 이유를 정리했습니다.
SQL 기초를 익히며 진행한 수업 실습입니다. 성능 수치는 당시 학습 환경에서 측정한 값입니다.