본문 바로가기

오라클/고도화 기법

(3)
높이 균형 히스토그램 equi-depth 히스토그램 으로도 불리며 컬럼이 가진 값의 수보다 적은 버킷을 요청할 때 생성 254이상의 버킷이 생성되면 높이균형 히스토그램으로 생성 endpoint_value : 버킷이 담당하는 가장 큰값 endpoint_number : 버킷 번호 popular value에 대한 선택도/카디널리티 계산 -선택도 = (조건절 값의 버킷 개수)/(총 버킷 개수) -카디널리티 = 총 로우 수 * 선택도 = 총로우 수 *density density 해당컬럼을 '='조건으로 검색할 때의 선택도를 미리 구해놓은 값 오라클이 density를 구하는 공식 히스토그램이 없을 때 : density = 1/num_distinct 도수분포 히스토그램일 때 : density = 1/(2*(null을 제외한 총 로우 수)..
도수분포 히스토그램 value-based 히스토그램 으로도 불리며, 값별로(frequency number)를 저장하는 히스토그램 최대 254개의 버킷만 허용함으로 값의 수가 254개를 넘는 컬럼에는 사용할 수 없음. 컬럼값마다 단일 버킷을 할당함으로 100개의 버킷을 요청해도 실제값이 89개면 89개 버킷생성 dba_histograms -endpoint_value : 버킷에 할당된 컬럼 값 -endpoint_number : endpoint_value로 정렬했을때, 최소값부터 현재값까지의 누적수량. 도수분포 히스토그램은 값별로 미리 계산해 두는 방식이기 때문에 조건절을 만족하는 카디널리티를 쉽고 정확하게 구할 수 있음.
오라클 히스토그램 http://bysql.net/w201101B/12617 Histogram 이란 무엇인가? 'Histogram이란 Table 형태의 빈도(개수)를 Graphical 하게 표현한 것'이다. -Oracle 9i 까지는 기본적으로 Histogram이 수집되지않음. -Oracle 10g 부터는 Histogram 이 수집되지 않음. DBMS_STATS Package 에서 Histogram 수집 방식을 담당하는 METHOD_OPT Parameter의 기본값이 "1"에서 "AUTO"로 바뀌었기 때문이다. 필연적으로 Histogram 에 대한 지식이 요구. 그렇다면 Histogram 은 언제 필요한가? -Data 가 Skew 되어 있을때 Histogram이 빛을 발한다. Data가 Skew 되었다는 것은 무슨 말이냐?..