1. COL1과 COL2로만 조회시 600만건 출력. 선택도가 매우 높은 편
2. DESCRIPTION 컬럼 조회시 10,000건 조회
3. 1, 2번을 결합하면 1000건 정도 조회.
[ SQL ]
SELECT *
FROM TB_TIBERO A
WHERE A.COL1 = :1
AND A.DESCRIPTION LIKE '%' || UPPER(:2) || '%'
AND A.COL2 != 'D' ;
[ 고려했던 사항 ]
1. DESCRIPTION 컬럼에 CTXCAT TEXT 기반 INDEX 생성 테스트 고려
- TIBERO PATCH 필요 -> 지원 불가
2. DESCRIPTION 컬럼 단일 인덱스 생성 > INDEX FAST FULL SCAN 수행+DISK I/O 방어위해
MULTI BUFFER 기능 고려
- 반드시 DB_KEEP_CACHE_SIZE Parameter가 설정 되어야만 함
튜닝 대상 DB -> 0 값으로 미설정 상태 -> 지원 불가
3. DESCRIPTION 결합 인덱스 INDEX FAST FULL SCAN 수행
- 이미 생성 되어 있던 INDEX ( COL1 + DESCRIPTION ) -> INDEX FAST FULL SCAN 수행 처리
- 화면 조회시마다 약 50,000 Block 읽어야 되지만 MBRC(DB_FILE_MULTIBLOCK_READ_COUNT(64) 를 이용하여
적은 I/O로 최대한 많은 Block을 읽어 빠른 응답이 되도록 처리 의도함.
INDEX ( COL1 + DESCRIPTION )으로 넓은 범위 INDEX RANGE SCAN 중 많은 DISK I/O 발생시
SINGLE BLOCK I/O로는 응답시간 보장 할 수가 없기 때문에, IFFS를 이용하여 1초 이내 처리는 어렵더라도
2~5초 이내에 일정한 응답시간을 보장함.
※ INDEX FAST FULL SCAN or TABLE FULL SCAN 처리는 시간이 감에 따라 데이터가 늘어나면 QUERY의 수행속도는
저하 될 수 있기 때문에 데이터가 늘어나는 양도 추측 해야 한다. 20년 이상을 운영했는데 BLOCK이 약 50,000 이기에
이와 같은 형태로 튜닝처리 하였음. ( Tibero로도 Oracle과 같이 instr로 잘 먹힐려나? )
'TIBERO > SQL Tuning' 카테고리의 다른 글
Tibero DBMS XPLAN (0) | 2024.11.24 |
---|