반응형

데이터들의 집합체를 데이터베이스, 데이터베이스를 관리하는 시스템을 DBMS(Database Management System)이라고 한다. 예를 들어, ORACLE, MS SQL Server, Tibero, MySQL 등을 말한다. SQL(Structured Query Language)은 데이터베이스를 만들고, 데이터들의 CRUD 등을 하기 위해 필요한 언어이다.

 

1. SQL 튜닝의 필요성

많은 개발자들은 SQL을 사용하면서 각각 자신만의 코딩 스타일로 1가지 문제에 대해 다양한 방법의 SQL 쿼리를 짜곤 한다. 여기서 이 다양한 SQL 쿼리가 성능의 차이를 초래할 수 있다. 데이터의 수가 10,000,000개가 있는 테이블을 풀스캔을 통해 조회를 하게 되면 정말 오랜 시간이 걸린다. 그래서, 이 조회하는 방법에도 SQL 쿼리의 성능에 따라 다양하게 튜닝을 할 수 있다.

 

이처럼, SQL 튜닝은 최소한의 자원으로  상대적으로 빠른 시간 내에 데이터 CRUD 작업을 할 수 있도록 튜닝하는 것을 말한다. 따라서, 이런 SQL 튜닝같은 경우는 단위테스트나 관통테스트, 통합테스트, 성능 테스트 등에서 필요성을 느끼기도 한다. 지금 프로젝트에서도 단위테스트를 할 때, 정말 절실하게 SQL 튜닝이 필요함을 느꼈다.

 

2. SQL 튜닝의 환경

우리가 프로젝트를 할 때, 로컬 서버, 개발 서버, 검증 서버, 운영 서버 등 각 서버에 따라 환경도 달라진다. 로컬 서버에서는 빠른 시간 내에 데이터가 조회 되었는데, 개발 서버에서는 그렇지 않은 경우가 발생한다. 지금 프로젝트에서도 DB 서버가 유럽 클라우드에 올라가 있어서 로컬에서는 조회를 해오는데 정말 오랜 시간이 걸린다. 근데, 개발 서버로 가서 조회를 하면 정말 빠르게 조회가 된다. 이처럼, 각 서버의 환경마다 SQL 쿼리의 성능이 달라진다. 이에 SQL 튜닝도 환경에 따라 효율적으로 적용을 해야 한다.

 

3. SQL 튜닝 작업을 언제 해야 할까?

SQL 튜닝 작업은 단위 테스트나 관통, 통합, 성능 테스트 등을 하면서 필요성을 느낀다고 했다. 이 뿐만 아니라, DB 설계 및 분석을 할 때, 테이블 컬럼의 인덱스 설정 등도 설계 및 분석 단계에서 다 이루어 져야 한다. 이처럼, 개발 단계만 아니라 설계 및 분석 단계에서도 SQL 튜닝 작업을 지속적으로 할 수 있다.

 

4. SQL 튜닝 작업

1) 분석 및 설계 단계

분석 및 설계 단계에서는 예를 들어 DB를 설계하는 예시를 들 것이다. 우리가 쇼핑몰 데이터를 가지고 테이블 조회를 할때, 상품명, 상품코드를 사용자가 정말 많이 검색을 한다. 이에 따라 상품명과 상품코드 컬럼을 인덱스를 걸어야 조회를 하는데 시간을 단축시킬 수 있다. 이처럼, 개발자 입장도 중요하지만 사용자 입장에서 데이터를 어떤 식으로 핸들링을 하는지를 고려하여 분석 및 설계 단계에서 SQL 튜닝 작업을 진행해야 한다.

 

2) 화면 설계 단계

현재 지금 프로젝트에서도 각 화면마다 검색을 할 때, 검색 조건에 필수값을 넣어서 SQL 쿼리의 성능을 높이거나 기간 검색을 할 때, 기준을 세워 조회 성능을 높이는 작업을 할 수 있다.

 

5. SQL 튜닝 절차

1) 튜닝 대상 SQL 수집

- 각종 테스트 수행 시 느린 SQL

 

2) SQL 문제점 분석 및 개선 사항 도출

- 느린 SQL의 실행 계획 분석

- SQL의 TRACE 파일 분석

- 인덱스 생성 및 변경, SQL 수정, 힌트 추가 등의 개선안 도출

 

3) 개선 사항 적용 및 개선 효과 확인

- 담당자에게 개선 사항 전달

- 개선 사항 적용 여부 확인

- 개선 효과 확인


2022년 07월 06일 v1.0 작성

2022년 07월 07일 v1.1 작성

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기