DB&SQL

SQL튜닝 - SQL 튜닝의 기본 원칙과 전략

초롱불 2024. 6. 7. 00:07

개요

이번 글에서는 SQL 튜닝의 기본 원칙과 전략에 대해서 다루어본다. SQL 실행 계획의 생성 과정과 서능 튜닝의 중요성에 대해서 배우고 문제를 식별하고 해결하는 단계별 절차를 통해 성능을 최적화하는 방법을 배운다.

문제 식별

SQL 쿼리에서 문제가 발생하면 첫 번쨰로 해야 할 일은 문제를 식별하는 것이다. 네트워크나 CPU와 같은 외부 요인으로 인해 같은 외부 요인으로 인해 발생할 수 있으므로 문제의 정확한 원인을 파악하는 것이 중요하다. 문제가 쿼리나 데이터베이스 내부에 있는지 확인한 후 세부 사항을 명확히 해야한다.

데이터 수집

성능이 저하된 쿼리에 대한 데이터를 수집한다. SQL 성능 분석기, SQL 추적 도구, TKPROF, 운영 체제 보고서, 클라이언트 보고서 AWR 보고서 등 다양한 도구를 사용할 수 있다. 이러한 데이터는 문제를 이해하고 해결하는데 중요한 정보를 제공한다.

데이터 분석

 수집한 데이터를 분석한다. 통계가 최신 상태인지, 파라미터가 적절한지, 최적화 모드가 적합한지 등을 확인한다. 데이터 분석 후 적절한 튜닝 전략을 선택한다.

튜닝 전략 선택

  • 파싱 시간 감소: 쿼리의 파싱 시간이 오래 걸리면 이를 줄이는 방법을 찾아야 한다. 쿼리를 변경하거나 커서 공유를 사용하고 연결 풀링을 잘 관리하는 등의 방법이 있다.
  • 플랜 비교 전략: 좋은 실행 계획과 나쁜 실행 계획을 비교하여 성능 저하의 원인을 찾는다.
  • 빠른 해결책 전략: 빠른 대응이 필요할 때 기본적인 사항을 점검하고 최적화 도구를 찾아 빠르게 문제를 해결한다.
  • 좋은 플랜 찾기 및 구현: SQL 튜닝 어드바이저를 사용하거나 최적화 설정을 변경하여 더 나은 실행 계획을 생성한다.
  • 쿼리 분석 전략: 가장 상세하고 효율적인 전략으로 시간과 노력이 필요하지만 대부분의 경우 최상의 결과를 찾는다.

결론

이번 글을 통해 SQL 튜닝의 기본 원칙과 다양한 전략을 다루어보았다. SQL 튜닝은 문제의 원인을 정확하게 파악하고 적절한 해결책을 찾는 것이 핵심이다. 이에 대한 검토 플랜을 세울 수 있도록 하는 것은 SQL 튜닝에 있어서 필수적이다.

감상

유데미 강의에서 놓친 부분이 없도록 쓰던 글도 어느덧 상당히 쌓였다. 강의를 볼 때마다 글을 쓴 것은 아니고 강의 자체는 종반부에 접어들고 있기에 강의를 쫓아가려면 한참 많은 글을 써야할 정도로 블로그 글이 뒤쳐지고 있다. 그런데 이 강의 정리 글은 연재 우선 순위에서 밀리게 될 듯하다. 나는 SQL 튜닝을 배우면서 배우는 김에 SQLP 시험도 칠 생각을 지니고 있었다. 유데미 강의는 SQL 튜닝에 있어서 필요한 부분을 잘 정리해서 전달해주는데에는 매우 유용했지만 SQLP라는 시험을 위한 강의가 아닌만큼 한계가 있을 수밖에 없다. 따라서 SQLP 시험을 염두에 둔 책의 내용들을 정리해서 다루는 걸 목표로 하고자 한다. SQLP의 최근 시험 합격률이 5.4%였다고하니 시험에 대한 부담감이 크게 느껴진다. 쉽지 않은 시험인만큼 성공적으로 해낼 수 있도록 열심히 해보도록 하겠다.