왜 데이터베이스(DB) 튜닝을 해야할까? - 개념/특징/성능분석 등

 

데이터베이스 튜닝에 대해서 언제, 누가, 어떻게, 무엇을, 어떻게, 왜 하는지 살펴보고자 한다.

또한 위의 단계에서 살펴본 데이터베이스 튜닝을 실제사례로 이해의 영역을 점검해볼까 한다.

 

(#1. WHAT?) - 데이터베이스(DB) 튜닝이란?

 

데이터베이스 튜닝
데이터 베이스 튜닝이란?

데이터베이스(DB)의 성능 향상을 위하여 운영체제나 DB자체의 구조를 이해하고, 필요한 요소를 변경하는 작업을 말한다. 데이터베이스를 단순히 데이터의 저장과 인출 등의 목적으로만 활용하는 것이 아니라 실제 서비스 운영에 있어서 성능은 매우 중요한 요소이다. 단순히 하드웨어의 퍼포먼스(성능)을 향상시키는 방안이 아니라 자주 호출하는 SQL이나 프로그램에서 호출되는 SQL의 경로 등을 운영체제나 다른 미들웨어 영역까지 확장하여 주어진 자원을 범위로 성능을 향상시킬 수 있는 범위를 탐색하는 것이 가장 중요하다고 할 수 있다. 따라서 투자한 비용 대비 얼마나 탁월한 효과를 내느냐가 중요한 평가 요소이다.

 

 

위에서 설명한 데이터베이스 튜닝의 단계를 세가지로 나누어 본다면 다음과 같이 나누어 볼 수 도 있다.

  • 데이터베이스 설계 튜닝 : 데이터베이스 설계단계에서 성능을 고려
  • 데이터베이스 환경 튜닝 : 성능을 고려하여 메모리나 블록 크기 등을 지정
  • SQL 문장 튜닝 : 성능을 고려하여 SQL 작성하고 쿼리 문장을 수정

(#2. WHY?) - 테이터베이스(DB) 튜닝 왜 할까?

 

데이터베이스 튜닝은 주어진 H/W 환경을 통해 처리량과 응답속도를 개선하기 위해 수행한다. 시스템 운영 중 다양한 애플리케이션의 도입과 데이터베이스 내 데이터량과 환경이 지속적으로 변화하고 또한 이를 호출하는 프로그램과 SQL이 잦은 수정을 거치게 되면 데이터베이스는 성능을 보장할 수 없다. 이에 따라 성능저하가 발생하면 시스템의 안정과 사용자의 만족 등을 위해 정기적인 데이터베이스 튜닝이 필요하게 된다.

 


(#3. WHO?) - 데이터베이스(DB) 튜닝 누가 할까?

 

데이터베이스 성능 튜닝은 다양한 업무 영역에서 실시할 수 있다. 튜닝 수행자 관점에서 구분하여 살펴보자.

 

  • 응용프로그램 설계자 : 응용시스템 영역에서 시스템을 재디자인한다.
  • 응용프로그램 개발자 :  SQL 문장 레벨에서 힌트를 수정하는 등 효율적인 SQL 쿼리문장으로 수정한다.
  • DBA : 비정상적인 시스템 수치를 모니터링하고 이와 관련한 DB 파라미터 등을 수정한다.
  • H/W, S/W , OS 관리자 : 시스템 레벨에서 원인을 파악하고 환경을 개선하고자 다양한 패치를 권고한다.

다만 시스템 구조 자체를 건드는 일은 운영 서비스 전체의 광범위한 영향을 미칠 수 있으므로 문제를 탐색하고 발생한 문제 지점만을 효율적으로 진단하고 해결할 수 있는 지엽적인 처방이 우선되어야 한다.


(#4. WHEN?) - 데이터베이스(DB) 튜닝 언제 할까?

 

데이터베이스 튜닝은 시스템 계획, 분석 및 설계, 개발 및 검수, 시스템 운영 전 단계에 걸쳐서 수행할 수 있다.

다만 각 단계에 맞는 튜닝방안들이 있으며 시스템 설계단계에서 부터 적극적으로 성능을 고려하여야만 추후에 튜닝에 대한 이슈가 적어질 수 있다. 이에 따라 시스템 개발 그 자체에만 목적을 두는 것이 아닌 효율적인 시스템을 설계하고 개발하는데 전념해야 한다.

데이터베이스 항목
데이터베이스 튜닝의 단계별 세부 항목

 


 

(#5. HOW?) - 데이터베이스(DB) 튜닝 어떻게 할까?

 

 

시스템의 문제를 분석하고 성능 목표를 결정하고 튜닝을 실시한다. 이는 데이터베이스 튜닝을 위해 OS, DB, WAS 등의 영역에서 시스템 레포팅을 참조할 수 있다. 이에 따라 성능이 떨어지는 프로그램을 발견하거나 특정시점이나 환경에 성능이 저하될 수 있는 상황 등을 탐지할 수 있다. 이에 문제를 정확히 분석하고 이를 원천적으로 해결할 수 있는 다양한 방법을 시도해볼 수 있다. 다만 위에서 언급한 바와 같이 시스템 전체 영역에 영향을 미치는 경우 서비스에 정상적인 운영을 오히려 방해하는 경우가 생길 수 있으므로 파급 영향을 함께 고려해야 한다.

 

데이터베이스 튜닝 절차
데이터베이스 튜닝 절차


(#6. EXAMPLE) - 데이터베이스(DB) SQL 튜닝 예제는?

 

 

#1~#5 에서 살펴본 데이터베이스(DB) SQL 튜닝의 실제 사례와 예제를 살펴보자.

 

우선 시스템 레포팅 등을 활용하여 서비스 환경에서 평균 응답시간이 가장오래걸리는 Top 쿼리를 산출해 볼 수 있다.

평균 응답시간과 함께 호출 건수를 동시에 살펴볼 수 있으며 애플리케이션 단에서 실제 SQL을 수정해도 파급영향이 적은지 등을 함께 고려하여 SQL 성능 튜닝 대상에 포함시킬 것인지 결정한다.

 

데이터베이스 튜닝 사례
데이터베이스 DB SQL 튜닝 사례

 

이후 SQL을 세부적으로 분석하여 어떠한 딕셔너리를 활용하는지 또는 메모리영역을 활용하는지, 얼마나 자주 호출되는지 등 복합적으로 분석하여 응답시간을 줄이기 위한 문장 수정안을 도출한다. 이에 쿼리 대상을 선정하여 애플리케이션에 적용을 요청하고 최종적이로 이를 시스템에 적용하고 모니터링함으로 데이터베이스(DB) 성능 튜닝을 마무리할 수 있다.

+ Recent posts