database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39817 게시물 읽기
No. 39817
analyze vs dbms_stats.gather_table_stats 차이점은?
작성자
신승식(sssin9163)
작성일
2012-11-28 14:16ⓒ
2012-11-28 14:50ⓜ
조회수
7,126

안녕하세요

저희는 오라클 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')
 

 

[Top]
No.
제목
작성자
작성일
조회
39822SQL 초고수에게 묻고싶습니다. [2]
나상숙
2012-11-28
6431
39819IN 쿼리가 잘안되는데요..ㅠㅠ [2]
초보
2012-11-28
5983
39818계층구조 sum 질문 [1]
함승우
2012-11-28
6635
39817analyze vs dbms_stats.gather_table_stats 차이점은?
신승식
2012-11-28
7126
39815import 시 에러좀 봐주세요.
최재철
2012-11-26
6469
39813테이블 생성시 복합 pk 같이 생성
나그네
2012-11-26
6278
39769조회 쿼리 에 대해서 질문합니다(내용수정) [1]
서홍민
2012-11-23
6327
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다