안녕하세요
저희는 오라클 11g를 사용하고 있습니다.
기존에 dbms_stats.gather_table_stats 를 사용 하여 테이블 통계정보를 생성하고 있었습니다.
그런데 어느 순간 부터 테이블 검색 속도가 느려 지고 있습니다.
그래서 Analyze table 방식을 사용하여 통계정보를 생성하여 보면 검색 속도가 빠르게 나오고 있습니다.
해당 테이블은 일별로 파티션 되어 있는 테이블인데
dbms_stats.gather_table_stats방식을 사용하여 쿼리 하는 방식과
analye table방식으로 통계정보를 생성하는 방식과의 실행경로를 확인해 보면
다르게 나오고 있습니다.
오라클에서 권장하는 방식은 dbms_stats.gather_table_stat방식이라서
이 방법을 유지해야 하겠지만. 이 방식을 사용하면 테이블 조회 속도가 특정 질의에서
플랜정보가 전혀 뜻하지 않게 나오고 있습니다.
이 럴때는 어디를 확인 해보아야 할까요?
무엇이 문제일까요?
고수님들의 조언 부탁 드립니다...
select *
from table_1
where upl_dt ='20120831''
===========================================
1. dbms_stats.gather_table_stats 방식으로 통계정보 생성시 plan 정보
----------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Pstart| Pstop |
----------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4849K| 1470M| 4 (0)| | |
| 1 | PARTITION RANGE SINGLE | | 4849K| 1470M| 4 (0)| 16 | 16 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| TABLE_1 | 4849K| 1470M| 4 (0)| 16 | 16 |
|* 3 | INDEX RANGE SCAN | TABLE_1_IDX6 | 1 | | 3 (0)| 16 | 16 |
----------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access(SYS_OP_DESCEND("UPL_DT")=HEXTORAW('CDCFCECDCFC7CCCEFF') )
filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("UPL_DT"))='20120831')
======================================================================================================================
2. anlayze table 방식으로 통계정보 생성시 plan정보
----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
----------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4926K| 1028M| 49274 (1)| 00:09:52 | | |
| 1 | PARTITION RANGE SINGLE| | 4926K| 1028M| 49274 (1)| 00:09:52 | 74 | 74 |
|* 2 | TABLE ACCESS FULL | TABLE_1 | 4926K| 1028M| 49274 (1)| 00:09:52 | 74 | 74 |
----------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("UPL_DT"='20120831')
|