안녕하세요. gather_plan_statistics 힌트절 삽입후 출력되는 실행계획에 대해 문의 드립니다. 아래 2개의 쿼리문의 실행계획중 메모리 사용량에 대한 문의 입니다. 두개의 쿼리가 중 다른 부분은 1번은 group by 이고 2번은 group by, order by 구문이 있습니다. 실행계획에서 보면 1번 쿼리에 대한 메모리 사용량이 높은데... 그 이유가 궁금합니다. 오라클 버젼은 11.2.0.1 입니다. 1)번 쿼리 select /*+ gather_plan_statistics */ DNAME, LOC from DEPT group by DNAME, LOC ; -------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | Cost (%CPU)| A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | -------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 19 (100)| 4 |00:00:00.01 | 21 | | | | | 1 | HASH GROUP BY | | 1 | 19 (6)| 4 |00:00:00.01 | 21 | 1012K| 1012K| 725K (0)| | 2 | TABLE ACCESS FULL| DEPT | 1 | 18 (0)| 4 |00:00:00.01 | 21 | | | | -------------------------------------------------------------------------------------------------------------------- 2)번 쿼리 select /*+ gather_plan_statistics */ DNAME, LOC from DEPT group by DNAME, LOC order by DNAME, LOC; -------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | Cost (%CPU)| A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | -------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 19 (100)| 4 |00:00:00.01 | 21 | | | | | 1 | SORT GROUP BY | | 1 | 19 (6)| 4 |00:00:00.01 | 21 | 2048 | 2048 | 2048 (0)| | 2 | TABLE ACCESS FULL| DEPT | 1 | 18 (0)| 4 |00:00:00.01 | 21 | | | | --------------------------------------------------------------------------------------------------------------------
사용된 메모리 크기를 나타내는 것인가요?
이거 외에 다른 항목은 모두 동일하네요.
딱히 이 팩터만 가지고 Sort 가 Hash 보다 성능이 좋다라고 얘기하기는 곤란할 듯 하네요.
Hash 가 더 많은 메모리를 사용한 것은 해시키값이 함게 저장되기 때문일 듯 하네요.
정렬이 많은 비용을 차지한다고 하죠.
그래서 그룹바이 방식을 해시로 바꾼거구요.
정렬동작에대한 비용과 해시처리동작에 대한 비용이 정확하게 표현되지 않는 듯 하네요.
메모리 사용만 봐서 판단할 것은 아닌듯 합니다.
사용하신 샘플이 워낙 크기가 작아서 정확한 비교가 안되네요.
대용량 샘플로 테스트해보세요.