DataBase/STUDY

[DB] DBeaver로 쿼리 실행 계획 분석

코맹 2025. 4. 10. 11:11

페이징 처리 기능을 구현하면서 OFFSET 방식 ROW_NUMBER 방식 중 어떤 방식이 쿼리 성능에 더 좋을지 고민하다 성능 테스트를 해보았다.

 

DBeaver로 테스트를 진행하게 되어서 정리 해보려 한다.

 

  • 테스트할 쿼리를 작성한 후 Ctrl + Shift + E를 누르면 실행 계획을 볼 수 있는 팝업창이 뜬다.
  • 이때 ANALYZE, COSTS, TIMING 옵션을 체크한 후 실행하면 보다 정확한 실행 계획을 확인할 수 있다.
🔹ANALYZE
: 실제 쿼리를 실행하여 실행 시간과 row 수 등을 측정
🔹COSTS
: 쿼리의 비용 정보(cost)를 출력
🔹TIMING
: 각 단계별 실행 시간을 출력

 

 

  • Node Type: sql을 실행시키는 각각의 단계
  • Entity: 조회하는 테이블
  • Cost: sql 실행하는 데 걸린 비용
  • Time: sql 실행하는 데 걸린 시간
  • Rows: sql 실행하면서 가져오는 row 수
  • Condition: sql 실행 조건문

 

💡 쿼리 앞에 EXPLAIN ANALYZE를 붙여서 SQL 실행 계획을 확인하는 방법도 있다.
     (이 방법은 DBeaver 뿐 아니라 대부분의 SQL 클라이언트에서 사용할 수 있다.)

explain analyze 예시 화면

 

 

✔️ 현재는 데이터 수가 적어 정확한 성능 비교가 어려웠지만, 대용량 데이터를 삽입한 후 다시 한 번 테스트를 진행해볼 계획이다.
✔️ 다음엔 OFFSET 방식과 ROW_NUMBER 방식의 차이점, 그리고 어떤 상황에서 더 적합한지에 대해 포스팅해보려 한다 😊