튜닝 시작

쉽게 튜닝은 원하는 성능을 얻기위한 작업이다.
Oracle 의 성능을 최대한 끌어내기 위해서는 Database 의 성격을 파악하여 올바른 설계와 효율적인 SQL 등을 작성하여  사용해야 한다.


튜닝 구분
크게 하드웨어적과 소프트웨어적인 튜닝을 고려할 수 있다. CPU 의 연산능력이 떨어진다거나 메모리의 양이 적다면 H/W 업그레이드하면 효과를 볼 수 있다. 하지만 그렇지 않는 경우(올바르지 않은 설계, 비효율적인 Query 등등)즉, 비효율적인 자원의 사용에서는 H/W 튜닝으로는 원인을 해결하지 못한다. 

H/W 
처음부터 시스템이 운영될 수 있는 성능의 H/W로 구축이 되어 있어야 한다(하지만 일반적으로 저러한 검토보다 예산에 맞게 구축하는게 현실이다.). 성능이 나오지 않는다고 처음부터 H/W 튜닝을 고려하기 보다는 소프트웨어적으로 검토를 한 후에 이상이 없다면 H/W튜닝을 고려해야 한다.




S/W
대부분의 소프트웨어의 성능은 잘못된 설계와 개발에 크게 좌우된다. 특히 Oracle의 경우 Database 의 성격을 잘못 판단하는 경우와 잘못된 테이블 모델링, 또는 Index 의 남용, 비효율적인 SQL 작성에 있다.
Oracle 성능 튜닝은 이러한 점을 바로 잡아 개선하는 과정이다.

- 최적화된 운영체제 
- 테이블 설계 
- 인덱스
- SQL



최적화된 운영체제
 Oralce 버전에 맞는 (검증된)패치가 완료되어 있어야 하며, 각종 환경설정 값이 모두 설정되어야 한다. 그리고 Oracle Server와 상관없는 프로세스의 자원사용율에 대해서도 고려해야 한다.

테이블 설계
테이블의 설계는 일단 개발되어 사용되면 변경하기가 어렵다. 실데이터가 운영중이고 다른 고려해야 할 점이 너무 많기 때문이다. 올바른 테이블 설계를 하기 위해서는 명확한 업무 분석이 필요하고 테이블 설계로써 표현해야 한다. 하지만 실제로는 완벽하게 설계하기란 하늘의 별 따기만큼 어려운 작업이다. 

인덱스
인덱스의 생성은 충분한 검토를 거친후에 생성해야 한다. 그 이유는 옵티마이저가 실행계획을 만들때 인덱스의 비중이 매우 크기 때문이다. 또한 인덱스는 주로 SQL 의 성능을 높이기 위함인데, 각각의 목적을 가진 수많은 SQL 을 만족시키기 위해선 전략적인 인덱스 생성과 사용을 해야 한다.

SQL 
인덱스를 올바르게 생성을 했음에도 불구하고 잘못된 SQL은 인덱스의 사용을 하지 않을 수도있다. 그리고 RBO 방식의 옵티마이져에서는 테이블의 순서 및 조건의 순서등이 매우 중요하게 작용한다.
 또한 배치성의 SQL인 경우 업무시간을 피하여 실행하는 것도 하나의 튜닝 방법이다.
대부분의 원인은 개발시 비효율적으로 개발을 했기 때문에 발생한다.




http://docs.oracle.com/cd/B19306_01/server.102/b14211/toc.htm 
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch8.htm

'Oracle > 튜닝' 카테고리의 다른 글

옵티마이져 RBO 와 CBO &  (0) 2012.03.16