안녕하세요.
프로시저를 튜닝할때 비용과 속도, 어느쪽이 더 나은 성능을 보일지 판단이 잘 서지 않아 질문드립니다.
프로시저 속도가 너무 떨어져서 튜닝 작업을 하려고 하는데,
특정 테이블을 조회할 때 속도가 떨어지는 것을 확인하였습니다.
해당 테이블에 대해서 인덱스 조각화 상태나 통계 등을 확인하였는데, 큰 문제는 없어서 프로시저를 직접 튜닝하려고 하는데,
해당 테이블을 일정 조건으로 미리 select 하여 임시테이블에 저장하여 임시테이블을 조회하는 방식하고,
각각 조회할 때마다 인덱스 힌트를 사용하여 조회하는 방법을 테스트 중입니다.
그런데 문제는 각각의 성능에서 어느쪽이 나을지 쉽게 판단이 서지 않는다는 겁니다.
아래 표는 각각 실행시 프로파일러 상에서 나온것을 간략하게 정리한 건데요.
|
cpu |
reads |
writes |
duration |
원본 |
4571 |
16728 |
0 |
4568 |
임시테이블사용 |
3776 |
107077 |
6136 |
2367 |
인덱스힌트사용 |
6491 |
760859 |
0 |
1320 |
인덱스 힌트가 속도가 가장 빠르지만 reads 에서 원본과 무려 70배나 차이가 납니다. 비용면에서 가장 많이 차지하고요.
원본이 비용은 가장 적지만 속도는 또 가장 느리고요.
비용과 속도 어느 쪽을 선택해야 할까요?
그리고 추가로 임시테이블과 인덱스힌트 중 어느쪽이 성능에 더 도움이 될까요?
어떤 사람들은 인덱스 힌트는 가급적이면 쓰지 말라고 하던데... 이유도 알려주시면 감사하겠습니다.
도움 부탁드립니다.
Comment 1
-
항해자™
2014.09.16 22:36
플랜을 올려주면 조금 도움이 될듯 하네요,,,