데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

데이터베이스 성능을 책임지는 튜너

데이터 이야기
작성자
dataonair
작성일
2011-12-08 00:00
조회
6197


DBA의 업무에는 많은 종류가 존재하며 그 중에 SQL 튜닝을 통한 성능 최적화는 DBA 및 개발자가 수행하고 싶어하는 업무일 것이다. 특히, 프로젝트에서 또는 운영 중인 시스템에서 SQL 튜닝을 통한 성능 최적화를 수행하는 인력은 자연스럽게 실력을 인정 받는 것이 현실이다. 그렇다면 DBA의 업무 중 하나인 SQL 튜닝은 과연 손쉬운 업무인가 SQL 튜닝은 많은 지식과 경험을 필요로 하는 DBA의 업무임에는 틀림없다. 이제부터 SQL 최적화를 수행해야 하는 이유와 SQL 최적화를 어떻게 수행해야 하는지를 확인해 보자.

SQL 튜닝을 통한 성능 최적화는 반드시 필요하다.

계속적인 데이터의 증가로 대부분의 시스템들은 대용량화 되어가고 있으며 많은 기업에서는 데이터베이스의 성능을 중요부분으로 인식하게 되었다. 이는 데이터베이스의 성능이 고객불만을 발생시킬 수 있는 부분이므로 기업의 성패를 좌우할 수 있기 때문이다.

시스템을 운영하면서 성능 저하를 피부로 느끼지만 실제 무엇이 문제인지를 인식하는 사람이 거의 없다. 비록 문제를 확인하였더라도 어떻게 해결해야 하는지를 명확히 말해줄 수 있는 사람이 부족하다는 것이 현실이다. 오라클은 매우 민감한 데이터베이스이다. 인덱스 또는 SQL 문 하나에 의해 해당 시스템은 천국과 지옥을 넘나들게 된다. 이는 경험해본 사람이 아니라면 이해가 안 되는 부분일 수도 있다. 우리가 좀더 SQL 튜닝에 대한 중요성을 인식하고 있었다면 이런 성능 저하는 발생하지 않았을 것이다. 그렇다면 SQL 튜닝을 통한 성능 최적화는 왜 필요한 것인가

n 기업의 업무 마비

n 계속된 비용 증가

n 고객 불만 증가

SQL에 의한 성능 저하는 해당 시스템의 성능 저하는 기업의 업무를 마비시킬 수도 있는 부분이다. 성능 저하에 의해 해당 시스템에서 업무가 구현되지 않는다면 어찌 기업의 업무를 유지 시킬 수 있겠는가 이와 같은 이유로 담당자들은 해당 시스템에 많은 비용을 투자하여 CPU 및 메모리 등을 증설하게 될 것이다. 과연 이러한 조치가 최적의 조치인가 필자는 이와 같이 무분별한 비용의 사용보다는 해당 시스템의 최적화가 먼저 수행되어야 한다고 생각한다. 그 다음에 시스템을 증설해도 늦지 않을 것이다. 이와 같은 SQL 성능 저하는 고객의 불만을 야기시키는 것은 두말할 필요도 없을 것이다.

이와 같은 이유에서라도 우리는 SQL 최적화를 수행해야 하며 그 중심에는 DBA가 있다는 점을 명심하길 바란다. DBA SQL 최적화에 대한 능력은 하나의 시스템을 최고로 만들 수도 있고 최악으로 만들 수도 있다는 것을 명심하길 바란다.

SQL 튜닝은 아래와 같은 단계로 수행해라.

SQL 튜닝을 통한 성능 최적화를 수행하기 위해서는 자기만의 방법론이 필요할 것이다. 이와 같은 방법론이 존재하지 않는다면 SQL 튜닝을 통한 성능 최적화에 대하 효과를 기대하기는 힘들 것이다. 아래에서 소개하는 SQL 튜닝 방법론은 하나의 예제이며 이를 참조하여 자신만의 SQL 튜닝 방법론을 구축하길 바란다.

n 성능 데이터 수집

n 성능 데이터 분석

n 문제 SQL 최적화

n 효과 분석

첫 번째로 위와 같이 성능 데이터를 수집해야 할 것이다. 성능 데이터는 여러 가지 방법으로 수집을 할 수 있을 것이다. 이와 같은 다양한 방법으로 성능 데이터를 수집하는 것이 SQL 최적화를 수행하기 위해서는 가장 기본적인 작업일 것이다. 성능 데이터에 대한 수집 없이 무엇을 보고 우리가 어떤 SQL에 문제가 있는지를 말할 수 있겠는가 이는 병원에서 엑스레이 하나 없이 환자의 병을 진단하는 것과 같을 것이다.

두 번째로 성능 데이터를 수집했다면 이제는 성능 데이터를 정확히 분석하는 과정이 필요할 것이다. 성능 데이터의 분석은 매우 객관적이며 이러한 성능 데이터 분석을 통해 문제 SQL을 도출할 수 있어야 할 것이다.

세 번째로 문제 SQL을 수집했다면 이제는 문제 SQL을 세밀하게 분석하여 해당 SQL의 문제점을 정확히 도출해야 할 것이다. 또한, 도출된 문제점을 기준으로 전문적인 지식을 융합하여 비효율을 제거하는 일련의 활동을 수행해야 한다.

네 번째로 이와 같이 최적화된 SQL을 적용하고 그에 따른 효과 분석이 필요할 것이다. 효과 분석은 계속된 SQL 최적화를 수행하기 위해 반드시 필요한 작업이며 효과 분석에서는 SQL 최적화를 수행한 내용에 대해 문서화를 하는 것도 매우 중요한 일이다.

이러한 SQL 최적화의 단계는 한번만 수행해서 종료되 비효율이 전혀 존재하지 않을 때까지 계속적으로 반복 수행해야 할 것이다. SQL 최적화는 DBA의 가장 핵심적인 업무 중 하나이다. 또한, 한단계 높은 일을 수행하기 위해서는 한번은 거쳐야 하는 단계이기도 하다. 이제는 DBA라면 SQL 최적화는 DBA의 업무이므로 반드시 도전해야 할 것이다