Database 에서의 인덱스는 이제 필수 불가결한 사항이고, 그것을 설계된 데이터베이스에 얼마나 효과적으로 잘 이용하냐는 것이 관건입니다.
위 MRTG 챠트는, SQL Server 전용으로 운영되는 장비의 CPU 로드 주간 그래프 챠트 입니다. 차트를 보면, 26주중에 사용량이 대폭 낮아진것을 볼수 있습니다.
왜 문제가 있었을까요?..
답은 자주 쿼리되는 테이블의 컬럼중 하나에 대해서 인덱스 설정을 해준것 하나 뿐입다. 효과가 대단 하죠?. 컬럼 하나에만 인덱스 설정해 주었을 뿐이데 말이죠.^^ 좀더 확인해서 설정해 준다면 현재보다 CPU 사용률을 더 낮출수 있습니다.
이미 인덱스 튜닝에 관련해서 여러 고급문서들이 존재하고, 수 많은 개발들이 인덱스 및 쿼리튜닝을 통해서 쿼리시간 단축을 연구 및 효과를 보고 있습니다.
물론, 이런것을 대용량의 레코드와, 빈번하게 쿼리가 이루어져야 효과가 극대화 되는 것이겠죠?..
인덱스에 관련된 내용은 매우 광범위하고 고급 기술의 이해가 필요한 부분 이므로 SQL Server 매뉴얼을 참조하거나 인터넷에 수많은 문서들을 참조해 보기 바랍니다.
튜닝에 있어서 공통된 부분이 많기도 하지만, 해당 사이의 특성에 따라서 제안된 방법이 오히려 역효과를 가져오는 경우도 있으므로 영향성에 대한 사전 분석이 매우 중요합니다.
인덱스 튜닝은 고급문서에서 설명하는 방법이나, 이해가 없더라도 SQL Server 자체에서 제공해주는 인덱스 튜닝 마법사를 이용하는 방법도 있습니다.
SQL Server for Developer: 관리자를 위한 튜닝 가이드
http://www.microsoft.com/korea/technet/sql/tuning_guide_admin06.asp
참고로, SQL Server 2005 에서는 "데이터베이스 엔진 튜닝 관리자" 로 변경 되었습니다.
다만,. 이런 자동화된 툴은 필요치 않은 테이블 컬럼에 까지 인덱스를 설정하기도 하며, 쿼리 데이터를 많이 쌓아 놓고 분석을 해야 그 효과가 좋습니다.
필자가 추천하는 방법은, 역시 SQL Server 에서 제공해주는 "프로필러(Profiler)" 를 이용하는 방법입니다.
HOWTO: SQL Server에서 응용 프로그램 성능 문제 해결
http://support.microsoft.com/kb/224587/ko
물론 이런 프로필러를 이용할려면 해당 툴에 대한 이해 및 이용방법이 선행되어야 하는 점이 있기는 하나, 테이블 스캔을 과도하게 하거나, CPU 이용률, 쿼리실행시간이 높은 쿼리를 확인하여 해당 쿼리튜닝 및 인덱스와 같은 서버측 설정을 해주면 됩니다.
10-mrtg-cpu-1.gif
10-profiler-1.png
댓글 없음:
댓글 쓰기