본문 바로가기

아이티/oracle&DB

oracle에서 access방법


이걸 읽음으로써 도움이 될지도 모르지만..도움이 될지도 몰라..? 아닌가? ㅎㅎ
지식은 소중하니깐요~ ^ㅁ^ ㅎㅎ 데이터 스캔 방법 중 두가지 방법이 있다는 것만이라도 알아두좌.


[optimizer access]
|id | operation | name | rows | bytes | tempSpc | cost(%cpu) | time|
*순서 : A010A -> P->S(time보구 유추)
[from절]
1) A010S(WAS_OLAP_MSTR010) : 3 ROWS(참조용)
    2) P(DSSMDOBJINFO)         : D 테이블의 2배
    3) D(DSSMDOBJDEPN)         : P 테이블의 1/2
*튜닝전에 ''set autotrace traceonly explain'을 반드시 수행
=>가장 중요한정보 이것은 'set autotrace traceonly explain'을 시행하여야 나온다.
이값은 예측값이지 정확한값은 trace로 봐야 정확하다.

============================================================================
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("D"."PROJECT_ID"="A010S"."OBJ_NM")
   3 - access("D"."OBJECT_ID"="P"."OBJECT_ID" AND "D"."PROJECT_ID"="P"."PROJECT_ID")
   5 - filter("D"."DEPNOBJ_TYPE"=12 AND "D"."OBJECT_TYPE"=3)
============================================================================
access-> 주관적(not full scan.)
filter->객관적 (테이블을 모두 읽은뒤에 그중 일치하는것만 빼내오는 체크조건으로 사용)

 quick scan tuning 이후 예측하는 실행계획
    -----------------------------------------------------
     Operation                      | Name            
    -----------------------------------------------------
     SELECT STATEMENT               |                 
      HASH JOIN                     |                 
       TABLE ACCESS FULL            | WAS_OLAP_MSTR010
       NESTED LOOPS                 |                 
        TABLE ACCESS FULL           | DSSMDOBJDEPN    
        TABLE ACCESS BY INDEX ROWID | DSSMDOBJINFO
          INDEX UNIQUE SCAN         | DSSMDOBJINFO_PK
    -----------------------------------------------------

써놓고도 잘모르겠다능 ㅡ_ㅡ;; 역시 .. DB의 세계는 넓고도 넓다.
요약 : 개발자가 Explain plan을 잡을때 고려해야할 사항들 중 
         index나 access data 양의 따른 접근방식을 기술함.
         access(not풀스캔)와 filter(풀스캔)라고 나뉘는 scan방식이 있다는것.


참고사이트 : www.oracleclub.com 입니다.

반응형