인덱스 range scan 병렬처리 0 3 1,162

by 김종석 [Oracle 기초] [2017.07.24 19:39:55]


아래그림은 다른 사이트에서 퍼온것입니다. 

 

제가쓰는 쿼리에서도 위와같이 인덱스 레인지스캔 병렬처리가 되어 엄첨 빨랐었는데요.  

며칠뒤 보니 실행계획에서 병렬처리가 사라지고 인덱스 레인지스캔만 남았고, 속도도 다섯배이상 느려졌습니다. 

 

이유가 뭘까요. 어떨때 range 스캔하면서 병렬처리 하는건가요?

 

감사합니다.

 

by jkson [2017.07.24 19:56:19]

해당 쿼리가 자주 수행되는 쿼리인가요?

짧은 제 지식을 토대로.. 말씀드리면(물론 다른 원인일 수도 있습니다)

자주 수행되지 않으면 해당 실행 계획은 라이브러러캐시에서 우선순위가 뒤로 밀려나다가 결국엔 사라집니다.

메모리에서 사라지고 다시 해당 쿼리가 최초로 수행되면 실행 계획이 다시 작성되는데

이때 바인드변수로 들어온 값이 굳이 병렬로 처리되어도 되지 않는 경우라면

병렬처리를 하지 않는 실행계획을 만들 것이고 이후에는 어떤 바인드 변수가 들어와도

병렬처리 하지 않는 실행계획을 수행하게 되겠지요.

병렬처리를 하는 것이 무조건 나은 실행계획이라고 판단되신다면 parrell 힌트를 사용하여 실행계획을

고정시키는 게 좋겠네요.


by 우리집아찌 [2017.07.25 08:48:35]

index가 수정되지는 않으셨나요??


by 우리집아찌 [2017.07.25 09:14:32]

http://www.gurubee.net/lecture/2249

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입