메뉴 건너뛰기

bysql.net

8. 통계정보 Ⅱ

2011.05.04 10:27

AskZZang 조회 수:5913

(1) 전략적인 통계수집 정책의 중요성

 

통계정보 수집이 얼마나 중요한지 깨닫는 것이 매우 중요!!

 

이번 절은 실제 통계정보를 수집하고 관리해야 할 DB 관리자들이 효과적인 통계정보 수집 전략을

세울 수 있도록 돕는 데에 목적이 있다.

 

CBO 능력을 최대한 끌어 올리는 핵심 요소

- 통계정보가 CBO에게 미치는 영향력은 절대적이다.

- 옵티마이저가 그 능력을 최대한 발휘할 수 있도록 환경을 조성해 주어야 한다.

 

DB 관리자의 핵심 역할은 통계정보 관리

- 성능 문제 때문에 수많은 밤을 지샌 원인이 통계정보에 있을 가능성이 있다.

- CBO 환경에서 DBA의 중요한 역할은 통계정보 수집 정책을 세우고 그에 따라 통계정보를

  안정적으로 운영, 관리하는 데에 있다.

- 문제없던 쿼리가 어느 날 갑자기 악성 SQL로 돌변했다면 가정 먼저 해당 테이블 통계정보에

  이상이 없는지 확인해 보라!! => 십중팔구 통계정보에서 비롯된 문제!!

 

통계정보 수집 시 고려사항

- 통계정보를 수집할 때 고려해야 할 중요한 네 가지 요소

  * 시간 : 부하가 없는 시간대에 가능한 빠르게 수집을 완료해야 함.

  * 샘플 크기 : 가능한 적은 양의 데이터를 읽어야 함.

  * 정확성 : 전수 검사할 때의 통계치에 근접해야 함.

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

 

  => 가장 짧은 시간 내에 꼭 필요한 만큼만 데이터를 읽어 충분한 신뢰수준을 갖춘 안정적인

     통계정보를 옵티마이저에게 제공!!

 

주기적으로 통계 수집하면서 안정적이어야 최적

- 통계정보의 중요성은 무엇보다 좋은 실행계획을 통해 쿼리 성능을 높이는 데 있다.

- 특히 OLAP처럼 비정형(ad-hoc) 쿼리들이 많은 시스템에선 시스템 성능을 결정짓는 가장

  중요한 변수로 작용한다.

 

통계 수집 정책 수립은 필수

- 통계를 수집할 필요가 없는 오브젝트에 대해서는 Lock 옵션으로 통계정보를 고정.

- 통계정보에 영향을 받아선 안 되는 중요한 일부 핵심 프로그램에 대해선 옵티마이저 힌트를

  적용해 실행계획을 고정시키는 것이 최선이다.

- 운영 DB에서 수집한 통계정보를 개발 DB에도 반영한 상태에서 개발을 진행해야 하며,

  프로그램을 운영 서버에 배포하기 전 충분한 테스트를 거쳐야 한다.

- 시스템 여건과 오브젝트 특성에 맞는 통계수집 정책을 마련하지 않고는 안정적인 고성능

  데이터베이스 구축은 요원한 일이다.

 

(2) DBMS_STATS

- dbms_stats 패키지를 사용하는 것이 바람직하다.

  dbms_stats가 더 정교하게 통계를 계산해 내기 때문이며,

  특히 파티션 테이블/인덱스일 때는 반드시 dbms_stats를 사용해야 한다.

 

 

(3) 컬럼 히스토그램 수집

(4) 데이터 샘플링

(5) 파티션 테이블 통계 수집

(6) 인덱스 통계 수집

(7) 캐싱된 커서 Invalidation

(8) 자동 통계 수집

(9) Statistics Preference

 
번호 제목 글쓴이 날짜 조회 수
35 1. 옵티마이저 file 휘휘 2011.04.18 6062
34 3. 옵티마이저의 한계 - P 휘휘 2011.04.18 3698
33 2. 옵티마이저 행동에 영향을 미치는 요소 balto 2011.04.18 6159
32 3. 옵티마이저의 한계 휘휘 2011.04.19 6698
31 4. 통계정보 Ⅰ file 토시리 2011.04.25 16009
30 6. 히스토그램 오예스 2011.04.25 17372
29 5. 카디널리티 오라클잭 2011.04.27 12917
28 7. 비용 file balto 2011.05.02 4995
» 8. 통계정보 Ⅱ AskZZang 2011.05.04 5913
26 1. 쿼리 변환이란? 운영자 2011.05.16 6258
25 3. 뷰 Merging 오라클잭 2011.05.17 6081
24 2. 서브쿼리 Unnesting 토시리 2011.05.18 2077
23 5. 조건절 이행 file balto 2011.05.30 5464
22 4. 조건절 Pushing 오예스 2011.05.31 17473
21 6. 조인 제거 AskZZang 2011.06.01 5440
20 7. OR-Expansion AskZZang 2011.06.01 8326
19 12. 기타 쿼리 변환 휘휘 2011.06.06 3122
18 10. 실체화 뷰 쿼리로 재작성 오라클잭 2011.06.08 9952
17 11. 집합 연산을 조인으로 변환 오라클잭 2011.06.08 4955
16 2. 소트를 발생시키는 오퍼레이션 file balto 2011.06.12 4847