행위

오라클 INVISIBLE INDEX

DB CAFE

thumb_up 추천메뉴 바로가기


1 인비저블 인덱스 INVISIBLE INDEX[편집]

android * 인덱스를 실제 생성/삭제하기 전에 "사용 안함" 상태로 만들어서 테스트해 볼 수 있는 기능을 제공하는 인덱스이다.(11g New Feature)

  • 인덱스가 많은 경우 DML문장에 나쁜 영향을 주기 때문에 사용하지 않는 인덱스는 삭제해 주어야 한다.
  • 문제는 해당 인덱스를 삭제하려고 했을 때, 정말 사용하는지 사용하지 않는 것인지를 정확하게 알아야 한다.
  • 모니터링 기간이 잘못 되었다든지 해서 인덱스를 삭제했는데, 나중에 생각지도 못했던 부분에서 문제가 발생할 수 있다.


1.1 인비저블 인덱스 생성[편집]

  • Index를 Invisible Index로 생성
  • Invisible Index는 옵티마이져가 PLAN을 결정할때 관여하지 않는 인덱스임
  • (주의) 인덱스가 REBUILD 되면 VISIBLE INDEX로 변경된다.
CREATE INDEX EMP.IDX_TEST ON EMP.TB_TEST(COL1,COL2,COL3) 
PCTFREE 10 
INITRANS 5
PARALLEL 8 NOLOGGING
TABLESPACE TS_IDX 
INVISABLE  -- 인비저블 인덱스 
ONLINE -- DML 발생시에도 테이블에 LOCK이 발생되지 않음.   
;

1.2 VISIBLE 인덱스로 변경[편집]

ALTER INDEX EMP.IX_TEST VISIBLE;

1.3 인비저블 인덱스 사용시 검토사항[편집]

  • 테이블에 대한 Acess Path 분석을 통한 영향도 및 타당성 검토를 수행한다.
    • index를 만들었을때 DML에 의한 성능저하 요인은?
    • index에 의한 효과 대상 SQL은?
    • 효과의 영향도는?
    • 다음을 SESSION LEVEL로 적용 후 관련 SQL에 대한 모든 PLAN점검을 실행한다.
ALTER SESSION SET optimizer_use_invisible_indexes=TRUE;