SQLP

[SQLP] 옵티마이저

songsua 2024. 7. 21. 23:15

1. 옵티마이저 시스템 통계 정보 조회방법

시스템 통계 정보는 옵티마이저의 I/O비용 CPU 비용을 추정하기위해 사용하는 정보
일반적으로 수동적으로 정보를 업테이트 해줘야한다

EXEC dbms_stats.gather_system_stats('Start');  ##시스템 통계 정보 분석
select * from sys.aux_stats$    ## 시스템 통계 정보의 조회

#=================================
SYSSTATS_MAIN	CPUSPEEDNW	1095.53739786298	
SYSSTATS_MAIN	IOSEEKTIM	10	
SYSSTATS_MAIN	IOTFRSPEED	4096	
SYSSTATS_MAIN	SREADTIM		
SYSSTATS_MAIN	MREADTIM		
SYSSTATS_MAIN	CPUSPEED		
SYSSTATS_MAIN	MBRC		
SYSSTATS_MAIN	MAXTHR		
SYSSTATS_MAIN	SLAVETHR		
SYSSTATS_INFO	STATUS		MANUALGATHERING
SYSSTATS_INFO	DSTART		07-21-2024 19:51
SYSSTATS_INFO	DSTOP		07-21-2024 19:51
SYSSTATS_INFO	FLAGS	1	
SYSSTATS_TEMP	SBLKRDS	12038	
SYSSTATS_TEMP	SBLKRDTIM	2362.515	
SYSSTATS_TEMP	MBLKRDS	973	
SYSSTATS_TEMP	MBLKRDTIM	389.453	
SYSSTATS_TEMP	CPUCYCLES	76692	
SYSSTATS_TEMP	CPUTIM	32269	
SYSSTATS_TEMP	JOB	0	
SYSSTATS_TEMP	CACHE_JOB	448	
SYSSTATS_TEMP	MBRTOTAL	21855	
#=================================

 

##TEST 포인트
통계정보 수집 시 고려사항
1. 시간/주기: 부하가 없는 시간대에 가능한 한 빠르게 수집을 완료한다.

2. 정확성: 표본 검사하더라도 전수 검사할 때의 통계치를 접근해야한다. # 통계처리 하기 전과 후의 '원본' 이 같아야한다. 

3. 안정성: 데이터에 큰 변화가 없는데도 매번 통계치가 바뀌지 않아야 한다.

 

2. 옵티마이저 통계 정보 조회방법

위와 달리 객체 정보에 대한 통계정보 방법
테이블 통계 정보(=cost)를 위해 I/O, cpu cost 정보를 위해 사용되는 정보이다.

#테이블의 통계 정보 수집
analyze table emp
compute statistics;

#모든 테이블에 대한 통계 정보 수집
select * from all_tab_statistics;

#통계 정보를 통해 table 의 총 행의 수, 수집하는 product 수집
analyze table Bonus compute STATISTICS;

#테이블 결과
NUM_ROWS	0
BLOCKS	0
AVG_ROW_LEN	0
SAMPLE_SIZE	0
LAST_ANALYZED	24/07/21
LAST_ANALYZED_SINCE	24/07/21


#스키마 통계 정보 조회 (sysdb계정에서 해야한다.)
EXEC dbms_stats.gather_schema_stats(ownname='HR')

 

- 비용 기반 옵티마이저에서는 캐싱 효과를 고려하지 않는다.

- 비용 기반 옵티마이저 내부적으로는 규칙을 사용한다.

'SQLP' 카테고리의 다른 글

[SQLP] 인덱스 (INDEX)  (0) 2024.07.27
[SQLP] Hint 실습  (0) 2024.07.27
[SQLP] Hint  (1) 2024.07.26
[SQLP] 실행 계획 (Execution plan)  (0) 2024.07.22
[SQLP] Selectivity & Cardinarity  (1) 2024.07.21