SPATIUM Desktop
주소복사
About Operating System Languages Tools Favorites Notice Visit TEST  
     Android (3)
     Linux (1)
     MacOS (1)
     OS (1)
     Solaris10 (15)
     Windows (1)
     Windows Server (2)
     Windows XP (3)
   ID  
   Password  
  |  
  Location United States
  IP Address 98.84.25.165
2024. 11
12
3456
7
89
10111213141516
17181920212223
24252627282930
Category  Languages, Oracle
Writer 김태우 Date 2015-07-16 17:31:23 Visit 3975
비용계산방법
 
 

비용계산방법

 
ANALYZE TABLE EC_APPLY COMPUTE STATISTICS;
ANALYZE INDEX EC_APPLY_COMPANY_IDX COMPUTE STATISTICS;
 

1) FTS

COST = 전체블록수/DB_FILE_MULTIBLOCK_READ_COUNT
 
SELECT TABLE_NAME, BLOCKS FROM USER_TABLES 
WHERE TABLE_NAME='EC_APPLY'; --> RESULT : 13474 BLOCKS
SHOW PARAMETER DB_FILE_MULTIBLOCK_READ_COUNT  --> RESULT : 8
COST = 13474/8 = 1684.25 (약 1685번) 검색으로 전체 데이터 검색
 

2) INDEX SCAN

COST = 1/선택도*클러스터링팩터
 
선택도 : 전체행에 대한 WHERE 조건절에 의해 검색되는 행의 비율
SELECT DISTINCT COMPANY_NO FROM EC_APPLY; --> RESULT : 2800 ROW
클러스터링팩터:하나의 인덱스가 몇개의 블록에 저장되어 있는지 나타내는 비율
SELECT INDEX_NAME, CLUSTERING_FACTOR FROM USER_INDEXES
WHERE INDEX_NAME = 'EC_APPLY_COMPANY_IDX'; --> RESULT : 79816
 
COST = 1/2800*79816 (약 29번) 검색으로 인덱스를 읽었음
 
set autot on
SELECT * FROM EC_APPLY WHERE COMPANY_NO = '6208100119';
 

<<COST 용어>>

1. selectivity

행집합으로부터의 행들의 일부분 검색 을 나타냄
0.0 ~ 1.0
0.0 : 아무값도 없음
1.0 : 모든행 선택
(1) where ename = '홍길동'  
(2) where ename like '홍%' 
(1)번보다 (2)이 더 많은 값 검색
 
selectivity는 해당 컬럼의 유일 값(distinct value)의 갯수에 따라 반비례하여 설정된다.
즉 distinct 값이 많으면 조건에 의해서 선택되는 값은 줄어듬.
 

2. cardinality 

행집합에서 행의 수 (행집합은 기본테이블, 뷰, 조인, group by의 결과일 수도 있음)
 
(1)base cardinality : 테이블을 분석하면 나타남(통계정보생성)
 
(2)effective cardinality : 기본테이블로부터 선택되어진 행의 수
(조건절에 의한 행을 의미함, 조건절이 없으면 effective와 base cardinality는 같음)
 
(3)join cardinality : 두행 집합이 함꼐 조인되었을때 생산된 행의 수
(조인조건의 selectivity에 의해 곱해진 두행 집합의 cardinality곱)
 
(4)distinct cardinality : 행집합의 컬럼에 유일한 값의 수
 
(5)group cardinality : group by  연산 후에 행집합에서 생성된 행의 수. 
group by는 행의 수를 줄여줌. distinct cardinality와 행집합의 행의 수에 의존적으로 변경됨. 그룹컬럼이 하나라면 그 컬럼의 distinct card와 같음, 그러나 그룹컬럼이 두개 이상이라면 최대 각컬럼의 distinct card가 되고, 최소는 각컬럼의 distinct card의 곱에서 행집합의 행의 수로 제한된다.결과는 총 행집합의 행의수보다 무조건 작으므로 distinct card가 가장 낮은 컬럼의 값과 행집합의 수 사이로 결정됨)
 
SELECT EMPNO, ENAME FROM EMP WHERE EMPNO = 7369; ->UNIQUE이므로 COST = 1, 1건의 ROW이므로 CARD=1
SELECT EMPNO, ENAME FROM EMP WHERE EMPNO IN (7369,7654); ->UNIQUE이므로 COST = 1, 2건의 ROW이므로 CARD=2
SELECT EMPNO, ENAME FROM EMP WHERE EMPNO IN (7369,7654,7788);->UNIQUE이므로 COST = 1, 3건의 ROW이므로 CARD=3
SELECT EMPNO, ENAME FROM EMP WHERE EMPNO IN (7369,7654,7788,7900);->UNIQUE이므로 COST = 1, 4건의 ROW이므로 CARD=4
 
 
 
 
 
Tags  비용계산방법,FTS,INDEX SCAN,COST,selectivity,cardinality
  Relation Articles
[Languages-Oracle] 비용계산방법 (2015-07-16 17:31:23)
  Your Opinion
Member ID
150 letters
Copyright (C) SPATIUM. All rights reserved.
[SPATIUM]WebMaster Mail