간단한 질문 하나만 할께요 Plan hash value 관련 0 4 6,522

by 개논물 [Oracle 기초] [2014.10.15 09:13:29]


1 . 실행 계획

Plan hash value: 85585325
 
--------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                         |    43 |   204K|     3  (34)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL                 | TB_FAV_COUPON           |     1 |    48 |     2   (0)| 00:00:01 |
|   2 |  SORT AGGREGATE                    |                         |     1 |    13 |            |          |
|*  3 |   INDEX RANGE SCAN                 | CM_SEQ_TB_COUPON_DETAIL |     1 |    13 |     1   (0)| 00:00:01 |
|*  4 |  VIEW                              |                         |     1 |   525 |     3  (34)| 00:00:01 |
|*  5 |   WINDOW SORT PUSHED RANK          |                         |     1 |   538 |     3  (34)| 00:00:01 |
|*  6 |    TABLE ACCESS FULL               | TB_STORE_IMAGES         |     1 |   538 |     2   (0)| 00:00:01 |
|*  7 |  VIEW                              |                         |    43 |   204K|     3  (34)| 00:00:01 |
|   8 |   COUNT                            |                         |       |       |            |          |
|   9 |    VIEW                            |                         |    43 |   203K|     3  (34)| 00:00:01 |
|  10 |     SORT ORDER BY                  |                         |    43 | 62995 |     3  (34)| 00:00:01 |
|  11 |      NESTED LOOPS                  |                         |       |       |            |          |
|  12 |       NESTED LOOPS                 |                         |    43 | 62995 |     2   (0)| 00:00:01 |
|  13 |        NESTED LOOPS                |                         |    43 | 39044 |     2   (0)| 00:00:01 |
|  14 |         TABLE ACCESS BY INDEX ROWID| TB_COUPON               |    86 | 54266 |     2   (0)| 00:00:01 |
|* 15 |          INDEX RANGE SCAN          | MULTI_TB_COUPON         |     1 |       |     1   (0)| 00:00:01 |
|* 16 |         TABLE ACCESS BY INDEX ROWID| TB_STORE                |     1 |   277 |     0   (0)| 00:00:01 |
|* 17 |          INDEX UNIQUE SCAN         | PK_TB_STORE             |     1 |       |     0   (0)| 00:00:01 |
|* 18 |        INDEX UNIQUE SCAN           | PK_TB_BRAND             |     1 |       |     0   (0)| 00:00:01 |
|* 19 |       TABLE ACCESS BY INDEX ROWID  | TB_BRAND                |     1 |   557 |     0   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------

 

2.실행계획

Plan hash value: 912651940
 
---------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                         |    11 | 53570 |     6  (34)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL                  | TB_FAV_COUPON           |     1 |    48 |     2   (0)| 00:00:01 |
|*  2 |  VIEW                               |                         |     1 |   525 |     3  (34)| 00:00:01 |
|*  3 |   WINDOW SORT PUSHED RANK           |                         |     1 |   538 |     3  (34)| 00:00:01 |
|*  4 |    TABLE ACCESS FULL                | TB_STORE_IMAGES         |     1 |   538 |     2   (0)| 00:00:01 |
|*  5 |  VIEW                               |                         |    11 | 53570 |     6  (34)| 00:00:01 |
|   6 |   COUNT                             |                         |       |       |            |          |
|   7 |    VIEW                             |                         |    11 | 53427 |     6  (34)| 00:00:01 |
|   8 |     SORT ORDER BY                   |                         |    11 | 16401 |     6  (34)| 00:00:01 |
|*  9 |      HASH JOIN RIGHT OUTER          |                         |    11 | 16401 |     5  (20)| 00:00:01 |
|  10 |       VIEW                          |                         |    31 |   806 |     2   (0)| 00:00:01 |
|  11 |        HASH GROUP BY                |                         |    31 |   806 |     2   (0)| 00:00:01 |
|* 12 |         TABLE ACCESS BY INDEX ROWID | TB_COUPON_DETAIL        |    31 |   806 |     2   (0)| 00:00:01 |
|  13 |          INDEX FULL SCAN            | CM_SEQ_TB_COUPON_DETAIL |    31 |       |     1   (0)| 00:00:01 |
|  14 |       NESTED LOOPS                  |                         |       |       |            |          |
|  15 |        NESTED LOOPS                 |                         |    11 | 16115 |     2   (0)| 00:00:01 |
|  16 |         NESTED LOOPS                |                         |    11 |  9988 |     2   (0)| 00:00:01 |
|  17 |          TABLE ACCESS BY INDEX ROWID| TB_COUPON               |    86 | 54266 |     2   (0)| 00:00:01 |
|* 18 |           INDEX RANGE SCAN          | MULTI_TB_COUPON         |     1 |       |     1   (0)| 00:00:01 |
|* 19 |          TABLE ACCESS BY INDEX ROWID| TB_STORE                |     1 |   277 |     0   (0)| 00:00:01 |
|* 20 |           INDEX UNIQUE SCAN         | PK_TB_STORE             |     1 |       |     0   (0)| 00:00:01 |
|* 21 |         INDEX UNIQUE SCAN           | PK_TB_BRAND             |     1 |       |     0   (0)| 00:00:01 |
|* 22 |        TABLE ACCESS BY INDEX ROWID  | TB_BRAND                |     1 |   557 |     0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------

 

위에 두 실행계획을 비교 해볼때  결론이 Plan Hash value 가 낮을 수록 좋다라고

즉 1번 실행계획이 효율적이다 라고 나름 결론을 내렸는데 맞나요?

조언좀 부탁드립니다,,

 

 

 

 

by 날도 [2014.10.15 09:24:06]

Plan hash value 는 SQL 문의 key값일겁니다....이것으로 성능을 논할수 없을 것 같네요. 

두 플랜을 비교할 때 처리되는 ROWS, BYTES 등으로 추측은 가능 할 것 같은데...줄맞춤이 너무 ...


by DJ [2014.10.15 09:29:10]

Plan hash value는 실행 계획에 대한 Hash 값이 라고 봅니다. Plan hash value값이 같으면 Plan 이 같은 거고 다르면 Plan 이 다른거죠. 성능과는 무관하고요.

v$sql 에 보시면 hash_value 컬럼과 plan_hash_value 컬럼이 있습니다.

hash_value는 SQL문에 대한 hash 값이고 plan_hash_value 는 해당 SQL문의 실행계획에 대한 hash 값입니다.


by 개논물 [2014.10.15 13:17:48]

아 그럼 무엇을 보고  성능이 우수하다고 알수가 있나요?  COST 합계를 내보년 될까요?


by 임상준 [2014.10.16 13:00:16]

cost cpu 를 봐도 되고 bytes 를 봐도 됩니다.

좀 더 부연 설명 드리면 둘 다 성능 측정을 할 수 있는 지표들 중 하나일 뿐이고, 수치만 보고 뭐가 우수하다 나쁘다를 판단하기 어려울 경우도 있습니다... 상황을 봐서 어떤 부분으로 성능 개선을 유도하실지 판단 하셔야 합니다.

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