- 옵티마이저의 원리와 이해
SQL> show parameter opt
.....
optimizer_mode integer ALL_ROW
alter session set optimizer_mode=rule;
set autotrace on;
select * from emp;
Statistics
----------------------------------------------------------
0 recursive calls 두 번 이상 실행하면 메모리에 데이터가 있어서 0 이 될 수 있다
0 db block gets
10 consistent gets 가져온 Block의 수
0 physical reads
0 redo size
2052 bytes sent via SQL*Net to client
407 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
31 rows processed
- 통계정보 생성 혹은 갱신하기
SELECT TABLE_NAME,LAST_ANALYZED,NUM_ROWS
FROM USER_TABLES
WHERE TABLE_NAME='TEMP';
TABLE_NAME LAST_ANALYZED NUM_ROWS
------------------------------ ------------- ----------
TEMP
1 row selected.
--// 통계정보 만드는 명령어
ANALYZE TABLE TEMP COMPUTE STATISTICS;
Table analyzed.
SELECT TABLE_NAME,LAST_ANALYZED,NUM_ROWS
FROM USER_TABLES
WHERE TABLE_NAME='TEMP';
TABLE_NAME LAST_ANALYZED NUM_ROWS
------------------------------ ------------- ----------
TEMP 30-8-12 0
1 row selected.
--// 통계정보 삭제하는 명령어
ANALYZE TABLE TEMP DELETE STATISTICS;
SELECT TABLE_NAME,LAST_ANALYZED,NUM_ROWS
FROM USER_TABLES
WHERE TABLE_NAME='TEMP';
TABLE_NAME LAST_ANALYZED NUM_ROWS
------------------------------ ------------- ----------
TEMP
1 row selected.
통계정보 갱신은 3개월 단위로 하는 것을 권고 하나 실제 필드에서는 거의 따르지 않는다고 함.
- CBO의 작동원리
- 실행계획 중 cost가 가장 적은 실행계획을 선택
- 컬럼별 데이터 분포에 대한 통계정보(=히스토그램) 사용
- 복잡한 관계표현에서 때로 잘못된 실행계획을 수립할 수도 있는데 이런 경우 힌트를 사용하여 수정하도록 함
- 오브젝트에 대한 통계정보를 기준으로 실행계획을 작성하므로 통계정보가 제대로 생성되어 있지 않은경우, 응용프로그램의 성능에 악영향을 미치게 되므로 주의
- Cost engine은 I/O cost, Network cost, CPU cost 등도 고려하도록 설계되어 있음
- ※ 통계정보 : 테이블의 데이터 건수, 평균 실이, 컬럼 별 distinct 값의 수, 인덱스 leaf node의 depth 등이 저장
- 쿼리의 이행 (자동변환)
NAME LIKE 'KTMIN' -> NAME = 'KTMIN' (가변길이일 경우만)
- 뷰의 병합 (자동으로 효율적인 WHERE 절을 만들어준다)
/*+MERGE*/ /*+NO_MERGE*/ 힌트를 사용해서 병합을 할 것인지 안할 것인지 컨트롤 할 수 있다.
- SQL SERVER에서 통계정보 보기
DBCC SHOW_STATISTICS(테이블명, INDEX명);
SELECT STATS_DATE(테이블명, INDEX명);
'SQL > SQL 교육' 카테고리의 다른 글
객체 스키마(소유자) 일괄 변경 스크립트 만들기 (0) | 2015.11.10 |
---|---|
[MSSQL] EXCEPT :: oracle의 MINUS 와 같은 효과 (0) | 2012.09.04 |
[교육] SQL초보에서실전전문가까지 ORACLE - 10 (0) | 2012.08.29 |
[교육] SQL초보에서실전전문가까지 ORACLE - 8 (0) | 2012.08.22 |
[교육] SQL초보에서실전전문가까지 ORACLE - 7 (0) | 2012.08.21 |