튜닝의 개념
우리가 살아가는 일상 생활에서 튜닝이라는 단어를 많이 보게 됩니다. 먼저, 자가 승용차로 출퇴근을 하는 어떤 회사원이 출근을 하기 위해 자동차의 시동을 걸었다고 생각 해 봅시다. 그런데, 어제까지 정상적으로 운행을 했던 자동차가 시동이 걸리지 않고 이상한 소음이 발생한 것입니다. 이럴 때 운전자는 자신이 아는 상식으로 이상유무를 확인하게 될 것입니다. 그러나, 대부분의 운전자는 자동차에 대한 해박한 지식을 가지고 있지 않기 때문에 결국 카센터 또는 정비공장을 찾게 되고 정비공장에서는 자동차 구조에 대한 해박한 지식을 가진 정비사가 고객의 자동차를 수리하게 됩니다. 즉, 이상유무를 확인하고 정상적으로 운행될 수 있도록 조율작업을 하게 됩니다. 이것을 튜닝이라고 합니다.
이번에는 소프트웨어적인 측면을 살펴볼까요. 어떤 운전자는 어제 자동차 운전면허증을 막 취득했습니다. 초보 운전자이긴 하지만 운전을 하고 싶은 마음에 자동차의 시동을 걸었습니다. 그리고, 출발을 하려고 하는데 이상한 소리와 함께 차는 제대로 움직이지를 않는 것입니다. 운전자는 자동차에 문제가 발생한 것으로 판단되어 정비사에게 도움을 요청했는데 정비사가 시험운행을 하는 순간 자동차는 정상적으로 출발되는 것이었습니다. 이유는 초보 운전자가 운전할 때 기어 1단에서 출발하지 않고 3단에서 출발하려고 했기 때문에 정상적인 출발을 하지 못했던 것입니다.
결국, 아무리 좋은 차를 가지고 있어도 운전을 제대로 할 수 없다면 자동차는 성능을 발휘할 수 없게 됩니다. 이런 경우, 운전자에 대한 교육을 통해 제대로 운전할 수 있도록 튜닝을 해야 합니다. 또 한가지 경우를 더 소개해 보겠습니다.
일상생활에서 악기를 구입할 때입니다. 피아노 또는 바이올린을 구입하기 위해 악기점을 방문해서 자기에게 맞는 크기, 가격 등을 고려한 다음 구입하게 됩니다. 제품이 결정되면 피아노 조율사, 바이올린 조율사는 악기들의 음(도레미파솔라시도)이 제대로 발성될 수 있도록 튜닝 작업을 하게 됩니다. 마찬가지로, 악기를 다루는 연주자가 초보 연주자라면 아무리 좋은 악기라 하더라도 좋은 연주를 할 수 없는 것처럼 연주자에 대한 튜닝도 필요하게 됩니다. 이렇듯, 우리의 일상생활에서도 튜닝이라는 말은 아주 보편적으로 사용되고 있습니다.
우리가 다루려고 하는 데이터베이스 분야에서도 마찬가지로 어제까지 정상적인 성능을 제공하던 오라클 데이터베이스가 오늘 SELECT, UPDATE, INSERT, DELETE문을 실행했더니 갑자기 실행속도가 너무 떨어져서 운영에 어려움을 겪게 되는 것과 마찬가지입니다. 이런 경우, 데이터베이스 관리자는 튜닝을 통해 성능이 향상될 수 있도록 노력하게 됩니다. 또한, 성공적인 튜닝을 통해 성능이 향상되기 위해서는 데이터베이스 관리자가 튜닝에 대한 해박한 지식과 경험을 갖추어야 합니다.
지금까지 튜닝의 개념에 대해서 알아보았는데 이젠 튜닝 방법론(TUNING METHODLOGY)에 대해서 알아봅시다. 조금전의 예처럼, 자동차의 성능에 문제가 발생하면 운전자는 카센터 또는 정비공장으로 가서 튜닝을 받게 됩니다. 그리고, 정비사에게 문제점에 대한 분석을 의뢰하고 정비사는 문제점을 분석한 후 수리여부에 대한 통보를 운전자에게 하게 됩니다. 튜닝 방법론은 정비사가 운전자로부터 튜닝을 의뢰 받아 작업을 완료하기까지 처리되는 모든 과정을 체계화 시킨 것을 의미합니다.
만약, 이러한 체계화된 튜닝단계 및 절차 없이 튜닝을 하게 된다면 튜닝할 때 발생하는 여러 가지 주변요소로부터 좋은 튜닝을 할 수 없게 됩니다. 튜닝 방법론은 표준화된 절차가 따로 있는 것이 아니고 사용자의 회사나 학교 그리고 조직에 맞는 적합한 튜닝절차를 체계화 시키면 될 것입니다. 다음 예제는 3가지 단계로 튜닝 방법론을 체계화한 것입니다.
준비단계는 고객이 데이터베이스에서 데이터를 참조할 때 느끼게 되는 성능 상의 문제와 운영상의 문제점들을 서로 확인하고 튜닝을 위한 계획을 수립하는 단계입니다. 이 단계가 끝나면, 튜닝/분석단계에서는 데이터베이스 관리자가 원인분석을 통해 파악된 튜닝 포인트(성능에 문제를 발생시키는 부분)에 맞는 튜닝작업을 실시하게 됩니다. 마지막으로 튜닝 작업이 완료되면 튜닝 전과 튜닝 후의 결과를 비교 분석하여 결과를 평가하게 되고 그 결과에 의해 사용자와 함께 최종 인터뷰를 하게 됩니다.
조금 전 설명처럼 튜닝을 보다 체계적으로 실시하기 위해서는 전체적인 튜닝 방법론이 필요하듯이 각 부분에서는 튜닝메쏘드(TUNING METHOD)가 필요합니다. 튜닝 방법론의 2단계에서 소개되었듯이 튜닝 방법란 튜닝절차를 의미합니다. 튜닝이란 성능을 저하시키는 원인을 데이터베이스 관리자가 정확하게 알고 있다면 문제점에 대해 직접적으로 튜닝을 실시하면 되겠지만 그 원인을 정확히 모른다면 어떤 부분부터 어떻게 튜닝을 시작해야 할지를 알 수 없을 때 적용하는 방법입니다. 튜닝의 방법은 여러 가지가 있습니다. 그리고, 여러 가지 문제점으로 인해 성능이 저하됩니다. 그 원인을 데이터베이스 관리자가 알 수 없다면 다음과 같은 순서와 방법으로 튜닝을 실시하십시오.
- 먼저, 비즈니스 튜닝이란 실제적인 데이터베이스에서 일어나는 튜닝이 아니고 회사나 학교, 조직에서 처리되는 업무의 흐름에 대한 튜닝을 의미합니다. 만약, 핸드폰을 생산하는 2개의 제조업체가 있다고 가정해 봅시다. A 회사는 10개의 공정을 거쳐 제품이 생산된다고 합니다. 반면에 B 회사는 8개의 공정만으로 똑같은 제품이 생산된다고 합니다. A 회사는 같은 제품을 10,000원에 생산하고 있고 B 회사는 8000원에 생산하고 있다고 합니다. 이런 경우, A 회사는 B 회사보다 많은 제조경비가 들기 때문에 B 회사보다 시장 경쟁력이 떨어진다고 합니다. 이에 따라 A 회사는 경영 컨설턴트를 통해 비즈니스 튜닝을 한 결과 10개의 제조공정을 7개 공정으로 줄일 수 있었다고 합니다. 이러한 불필요한 공정을 제거함으로서 생산시간과 생산단가, 생산인력을 줄이는 것을 비즈니스 튜닝이라고 합니다.
- 디자인 튜닝이란 데이터베이스가 분석되고 설계되는 단계에서 만들어지는 데이터베이스의 논리적 구조(테이블의 구조, 테이블의 크기, 인덱스 여부 및 종류 등)가 좋은 성능을 기대할 수 없게 만들어진 경우의 튜닝을 의미합니다. 또는, 애플리케이션 프로그램이 개발될 때 프로그램이 좋은 성능을 발휘할 수 있도록 만들어지지 못한 경우입니다. 생각해 보세요 !! 사용자들이 살고 있는 집의 구조가 출입이 불편하게 만들어져 있다면.....이해 되시죠 ?
- 애플리케이션 튜닝은 자동차와 운전자의 관계에서 운전자의 운전능력과 관련된 내용입니다. 아무리 좋은 차, 아무리 좋은 악기를 가졌다 하더라도 운전자 또는 연주자가 자동차의 운전방법과 연주하는 방법을 제대로 모른다면 좋은 성능을 기대할 수 없겠죠 ? 데이터베이스에서 사용자가 실행한 SQL문(SELECT, UPDATE, INSERT, DELETE)의 실행원리와 실행방법을 제대로 모르고 사용한다면 좋은 성능은 기대할 수 없는 것입니다. 이러한 SQL문을 분석하여 성능을 발휘할 수 있도록 조율하는 것을 애플리케이션 튜닝이라고 합니다.
- 서버튜닝은 데이터베이스의 메모리 영역과 물리적 구조에 관해 튜닝하는 방법입니다. 만약, 사용자가 P/C에서 윈도우 운영체제를 사용하고 있는데 대용량의 이미지 데이터 또는 텍스트 데이터를 처리하는 작업을 하고 있다면 시스템의 메모리가 충분하지 못하다면 작업처리에 시간이 많이 소요되고 어려움이 있을 것입니다. 이러한 원리와 마찬가지로 데이터베이스 메모리 영역의 크기가 처리하려고 하는 테이블의 데이터 크기보다 작아서 성능이 저하되는 문제가 발생하는 경우에 메모리를 더 크게 할당해주게 되는데 이런 문제를 조율하는 것을 서버튜닝이라고 합니다.
- 시스템 튜닝은 UNIX, 윈도우와 같은 운영체제에서 시스템의 성능향상을 위해 조율하는 방법을 의미합니다.
튜닝 방법론의 주요특징
-
- 튜닝의 빠른 단계일수록 성능을 개선시키는데 큰 효과를 볼 수 있습니다.
- 튜닝 방법에서 서버 튜닝을 하는 것 보다 애플리케이션 튜닝을 하는 것이, 애플리케이션 튜닝을 하는 것 보다 디자인 튜닝이 하는 것이 보다 효과적인 튜닝 방법이란 의미입니다. 하지만, 이러한 튜닝순서는 프로젝트가 수행되는 단계에서 성능을 고려하는 방법이고, 프로젝트 완료 후에는 서버 튜닝보다는 애플리테이션 튜닝을, 애플리케이션 튜닝보다 디자인 튜닝 순으로 작업하는 것이 적은 비용으로 성능을 향상시킬 수 있습니다.
-
- 어떤 단계에서 실행된 튜닝결과는 다음 단계의 튜닝에 영향을 미칩니다.
- 어떤 애플리케이션의 성능이 저하되었을 때 디자인 튜닝을 먼저하게 되면 비록 서버의 환경에 문제가 있더라도 서버튜닝 없이 성능이 개선되는 효과를 볼 수 있습니다.
-
- 튜닝에 대한 목표를 확실히 설정해야 합니다.
- 대부분의 개발자들은 튜닝작업을 할 때 명확한 목표를 두지 않습니다. 막연하고 의미없는 목표가 아니라, 시스템 전반적으로 충분한 고려를 한 다음 실현 가능한 목표를 설정해야 합니다. 모든 관련자들이 수용하고 인증할 수 있는 뚜렷한 목표설정이 매우 중요합니다.
-
- 튜닝 기록을 보관하십시오.
- 대부분의 개발자들은 튜닝을 마술이나 마법처럼 생각합니다. 하지만, 실제 튜닝은 규칙적, 비규칙적으로 실시해야 하며 반복적인 오퍼레이션의 결과를 참조함으로써 개선해 나가는 것 입니다. 이때, 이전에 실시되었던 튜닝전 기록은 잘 보관해 두었다가 튜닝 후의 결과와 비교할 때 사용할 수 있어야 합니다. 반복적인 튜닝작업을 수 차례 하다 보면 이전 튜닝결과를 기억하기 쉽지않기 때문입니다.
- 객체지향 설계기법 또는 클라이언트-서버 환경을 보다 효과적으로 적용하면 적은 비용으로 향상된 성능을 보장 받을 수 있습니다.
- 일반적으로, 데이터베이스 관리자는 서버튜닝을, 개발자는 애플리케이션 튜닝을, 분석/설계자는 디자인 튜닝단계를 기본적으로 책임지게 됩니다. 하지만, 서로 연관된 일을 하기 때문에 상호 보완된 작업을 통해 팀워크가 잘 조화되는 것이 튜닝의 관건이 되기도 합니다.
튜닝에 대한 경험이 없는 개발자나 초보 DBA인 경우 어디서 부터 튜닝을 시작해야 할지 막막합니다. 이런 경우 절차형 튜닝방법론을 따라가다 보면, 튜닝에 대한 개념을 잡을 수 있을 것 입니다.
튜닝에 대해 어느정도의 지식 또는 경험이 있는 개발자나 DBA 분들에게, 선택적인 튜닝을 할 수 있는 기능을 제공합니다. 비 절차형으로써, 원하는 항목을 선택하여 튜닝 로드맵을 이용함으로써, 절차형 튜닝 방법론에 비해 시간적 효율을 제공합니다.
튜닝방법론이해
지금까지 튜닝의 개념에 대해서 알아보았는데 이젠 튜닝 방법론(TUNING METHODLOGY)에 대해서 알아봅시다. 조금전의 예처럼, 자동차의 성능에 문제가 발생하면 운전자는 카센터 또는 정비공장으로 가서 튜닝을 받게 됩니다. 그리고, 정비사에게 문제점에 대한 분석을 의뢰하고 정비사는 문제점을 분석한 후 수리여부에 대한 통보를 운전자에게 하게 됩니다. 튜닝 방법론은 정비사가 운전자로부터 튜닝을 의뢰 받아 작업을 완료하기까지 처리되는 모든 과정을 체계화 시킨 것을 의미합니다.
만약, 이러한 체계화된 튜닝단계 및 절차 없이 튜닝을 하게 된다면 튜닝할 때 발생하는 여러 가지 주변요소로부터 좋은 튜닝을 할 수 없게 됩니다. 튜닝 방법론은 표준화된 절차가 따로 있는 것이 아니고 사용자의 회사나 학교 그리고 조직에 맞는 적합한 튜닝절차를 체계화 시키면 될 것입니다. 다음 예제는 3가지 단계로 튜닝 방법론을 체계화한 것입니다.
준비단계는 고객이 데이터베이스에서 데이터를 참조할 때 느끼게 되는 성능 상의 문제와 운영상의 문제점들을 서로 확인하고 튜닝을 위한 계획을 수립하는 단계입니다. 이 단계가 끝나면, 튜닝/분석단계에서는 데이터베이스 관리자가 원인분석을 통해 파악된 튜닝 포인트(성능에 문제를 발생시키는 부분)에 맞는 튜닝작업을 실시하게 됩니다. 마지막으로 튜닝 작업이 완료되면 튜닝 전과 튜닝 후의 결과를 비교 분석하여 결과를 평가하게 되고 그 결과에 의해 사용자와 함께 최종 인터뷰를 하게 됩니다.
튜닝절차
조금 전 설명처럼 튜닝을 보다 체계적으로 실시하기 위해서는 전체적인 튜닝 방법론이 필요하듯이 각 부분에서는 튜닝메쏘드(TUNING METHOD)가 필요합니다. 튜닝 방법론의 2단계에서 소개되었듯이 튜닝 방법란 튜닝절차를 의미합니다. 튜닝이란 성능을 저하시키는 원인을 데이터베이스 관리자가 정확하게 알고 있다면 문제점에 대해 직접적으로 튜닝을 실시하면 되겠지만 그 원인을 정확히 모른다면 어떤 부분부터 어떻게 튜닝을 시작해야 할지를 알 수 없을 때 적용하는 방법입니다. 튜닝의 방법은 여러 가지가 있습니다. 그리고, 여러 가지 문제점으로 인해 성능이 저하됩니다. 그 원인을 데이터베이스 관리자가 알 수 없다면 다음과 같은 순서와 방법으로 튜닝을 실시하십시오.
- 먼저, 비즈니스 튜닝이란 실제적인 데이터베이스에서 일어나는 튜닝이 아니고 회사나 학교, 조직에서 처리되는 업무의 흐름에 대한 튜닝을 의미합니다. 만약, 핸드폰을 생산하는 2개의 제조업체가 있다고 가정해 봅시다. A 회사는 10개의 공정을 거쳐 제품이 생산된다고 합니다. 반면에 B 회사는 8개의 공정만으로 똑같은 제품이 생산된다고 합니다. A 회사는 같은 제품을 10,000원에 생산하고 있고 B 회사는 8000원에 생산하고 있다고 합니다. 이런 경우, A 회사는 B 회사보다 많은 제조경비가 들기 때문에 B 회사보다 시장 경쟁력이 떨어진다고 합니다. 이에 따라 A 회사는 경영 컨설턴트를 통해 비즈니스 튜닝을 한 결과 10개의 제조공정을 7개 공정으로 줄일 수 있었다고 합니다. 이러한 불필요한 공정을 제거함으로서 생산시간과 생산단가, 생산인력을 줄이는 것을 비즈니스 튜닝이라고 합니다.
- 디자인 튜닝이란 데이터베이스가 분석되고 설계되는 단계에서 만들어지는 데이터베이스의 논리적 구조(테이블의 구조, 테이블의 크기, 인덱스 여부 및 종류 등)가 좋은 성능을 기대할 수 없게 만들어진 경우의 튜닝을 의미합니다. 또는, 애플리케이션 프로그램이 개발될 때 프로그램이 좋은 성능을 발휘할 수 있도록 만들어지지 못한 경우입니다. 생각해 보세요 !! 사용자들이 살고 있는 집의 구조가 출입이 불편하게 만들어져 있다면.....이해 되시죠 ?
- 애플리케이션 튜닝은 자동차와 운전자의 관계에서 운전자의 운전능력과 관련된 내용입니다. 아무리 좋은 차, 아무리 좋은 악기를 가졌다 하더라도 운전자 또는 연주자가 자동차의 운전방법과 연주하는 방법을 제대로 모른다면 좋은 성능을 기대할 수 없겠죠 ? 데이터베이스에서 사용자가 실행한 SQL문(SELECT, UPDATE, INSERT, DELETE)의 실행원리와 실행방법을 제대로 모르고 사용한다면 좋은 성능은 기대할 수 없는 것입니다. 이러한 SQL문을 분석하여 성능을 발휘할 수 있도록 조율하는 것을 애플리케이션 튜닝이라고 합니다.
- 서버튜닝은 데이터베이스의 메모리 영역과 물리적 구조에 관해 튜닝하는 방법입니다. 만약, 사용자가 P/C에서 윈도우 운영체제를 사용하고 있는데 대용량의 이미지 데이터 또는 텍스트 데이터를 처리하는 작업을 하고 있다면 시스템의 메모리가 충분하지 못하다면 작업처리에 시간이 많이 소요되고 어려움이 있을 것입니다. 이러한 원리와 마찬가지로 데이터베이스 메모리 영역의 크기가 처리하려고 하는 테이블의 데이터 크기보다 작아서 성능이 저하되는 문제가 발생하는 경우에 메모리를 더 크게 할당해주게 되는데 이런 문제를 조율하는 것을 서버튜닝이라고 합니다.
- 시스템 튜닝은 UNIX, 윈도우와 같은 운영체제에서 시스템의 성능향상을 위해 조율하는 방법을 의미합니다.
튜닝 방법론의 주요특징
-
- 튜닝의 빠른 단계일수록 성능을 개선시키는데 큰 효과를 볼 수 있습니다.
- 튜닝 방법에서 서버 튜닝을 하는 것 보다 애플리케이션 튜닝을 하는 것이, 애플리케이션 튜닝을 하는 것 보다 디자인 튜닝이 하는 것이 보다 효과적인 튜닝 방법이란 의미입니다. 하지만, 이러한 튜닝순서는 프로젝트가 수행되는 단계에서 성능을 고려하는 방법이고, 프로젝트 완료 후에는 서버 튜닝보다는 애플리테이션 튜닝을, 애플리케이션 튜닝보다 디자인 튜닝 순으로 작업하는 것이 적은 비용으로 성능을 향상시킬 수 있습니다.
-
- 어떤 단계에서 실행된 튜닝결과는 다음 단계의 튜닝에 영향을 미칩니다.
- 어떤 애플리케이션의 성능이 저하되었을 때 디자인 튜닝을 먼저하게 되면 비록 서버의 환경에 문제가 있더라도 서버튜닝 없이 성능이 개선되는 효과를 볼 수 있습니다.
-
- 튜닝에 대한 목표를 확실히 설정해야 합니다.
- 대부분의 개발자들은 튜닝작업을 할 때 명확한 목표를 두지 않습니다. 막연하고 의미없는 목표가 아니라, 시스템 전반적으로 충분한 고려를 한 다음 실현 가능한 목표를 설정해야 합니다. 모든 관련자들이 수용하고 인증할 수 있는 뚜렷한 목표설정이 매우 중요합니다.
-
- 튜닝 기록을 보관하십시오.
- 대부분의 개발자들은 튜닝을 마술이나 마법처럼 생각합니다. 하지만, 실제 튜닝은 규칙적, 비규칙적으로 실시해야 하며 반복적인 오퍼레이션의 결과를 참조함으로써 개선해 나가는 것 입니다. 이때, 이전에 실시되었던 튜닝전 기록은 잘 보관해 두었다가 튜닝 후의 결과와 비교할 때 사용할 수 있어야 합니다. 반복적인 튜닝작업을 수 차례 하다 보면 이전 튜닝결과를 기억하기 쉽지않기 때문입니다.
- 객체지향 설계기법 또는 클라이언트-서버 환경을 보다 효과적으로 적용하면 적은 비용으로 향상된 성능을 보장 받을 수 있습니다.
- 일반적으로, 데이터베이스 관리자는 서버튜닝을, 개발자는 애플리케이션 튜닝을, 분석/설계자는 디자인 튜닝단계를 기본적으로 책임지게 됩니다. 하지만, 서로 연관된 일을 하기 때문에 상호 보완된 작업을 통해 팀워크가 잘 조화되는 것이 튜닝의 관건이 되기도 합니다.
절차형 튜닝
튜닝에 대한 경험이 없는 개발자나 초보 DBA인 경우 어디서 부터 튜닝을 시작해야 할지 막막합니다. 이런 경우 절차형 튜닝방법론을 따라가다 보면, 튜닝에 대한 개념을 잡을 수 있을 것 입니다.
튜닝에 대해 어느정도의 지식 또는 경험이 있는 개발자나 DBA 분들에게, 선택적인 튜닝을 할 수 있는 기능을 제공합니다. 비 절차형으로써, 원하는 항목을 선택하여 튜닝 로드맵을 이용함으로써, 절차형 튜닝 방법론에 비해 시간적 효율을 제공합니다.
'DB > Oracle Administrator' 카테고리의 다른 글
오라클이 select를 처리하는 과정 (0) | 2012.07.06 |
---|---|
오라클 구조(Architecture) 2 (0) | 2012.07.06 |
SQL문 분석의 이해 (0) | 2012.07.06 |
SQL문처리과정 이해 (0) | 2012.07.06 |
오라클 서버 구조 (0) | 2012.07.06 |