- HOME
- [종료]코어 오라클 데이터베이스 스터디
- 7차 코어 오라클 데이터베이스 스터디
- 13장. 인덱스 샷건
13장 인덱스 샷건
13.1 목표: 성능 최적화
- 데이터베이스 성능을 향상시키는 가장 좋은 방법은 인덱스를 잘 활용하는 것.
13.2 안티패턴: 무계획하게 인덱스 사용하기
- 인덱스를 불충분하게 정의하거나 또는 아예 정의하지 않는다.
- 너무 많은 인덱스를 정의하거나 도움이 되지 않는 인덱스를 정의 한다.
- 어떤 인덱스도 도움이 될 수 없는 쿼리를 실행한다.
13.3 안티패턴 인식 방법
- "이게 내 쿼리인데, 어떻게 빠르게 할 수 있을까?"
- "모든 필드에 인덱스를 걸었는데, 왜 빠르지 않은 거지?"
- "인덱스가 데이터베이스를 느리게 만든다는 것 들었어. 그래서 나는 인덱스를 사용하지 않지."
13.4 안티패턴 사용이 합당한 경우.
13.5 해법: 인덱스를 MENTOR하라
- MENTOR(Measure, Explain, Nominate, Test, Optimize, Rebuild)
측정(Measure)
- 프로파일링 해라.
- Oracle(TKProf), SQL Server(SQL Server Profiler), MySQL(slow query log), PostgreSQL(pgFouine)
실행계획확인(Explain)
- 옵티마이저를 통해 쿼리가 사용할 인덱스를 고른다. 데이터베이스의 이런 분석 결과를 리포트로 볼 수 있는데, 이를 쿼리 실행계획이라 한다.
지명(Nominate)
- 쿼리에서 인덱스를 사용하지 않고 테이블에 접근하는 부분을 살펴 봐라.
테스트(Test)
- 인덱스를 생성한 후, 쿼리를 다시 프로파일링 해라.
최적화(Optimize)
- 인덱스는 빈번하게 사용되는 데이터 구조로, 캐시 메모리에 보관할 좋은 후보다.
- 캐시 메모리에 보관할 수 있는 방안을 검토.
재구성(Rebuild)
- 시간이 지나면서 데이터를 업데이트하고 삭제함에 따라, 인덱스도 점점 균형을 잃는다.
- 인덱스를 최대한 활용하기 위해 주기적으로 인덱스를 리빌드 해라.
문서에 대하여
- 최초작성일 : 2011년 12월 10일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 인사이트(insight) 에서 출간한 'SQL AntiPatterns : 개발자가 알아야 할 25가지 SQL 함정과 해법'를 참고하였습니다.*
- HOME
- [종료]코어 오라클 데이터베이스 스터디
- 7차 코어 오라클 데이터베이스 스터디
- 13장. 인덱스 샷건