사용자 도구

사이트 도구


notepad:vleeky

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
notepad:vleeky [2010/06/02 23:25]
vleeky
notepad:vleeky [2010/06/02 23:55] (현재)
vleeky
줄 126: 줄 126:
  
 =====사) 수정이 필요한 애플리케이션 조사 및 선정===== =====사) 수정이 필요한 애플리케이션 조사 및 선정=====
- 
  
 ====== 4.2 클러스터링 형태의 결정 기준 ====== ====== 4.2 클러스터링 형태의 결정 기준 ======
 +{{:notepad:테이블1.jpg|}}
 +===테이블 가정===
 +- TAB3, TAB4는 대용량의 데이터를 가짐
 +
 +- TAB3 는 매우 빈번하기 COL3의 대량을 처리범위에서 TAB2와 TAB1을 조인
 +
 +- TAB4 는 COL4로 자주 넓은 범위를 처리
  
 ====== 4.2.1 포괄적인 클러스터링 ====== ====== 4.2.1 포괄적인 클러스터링 ======
줄 134: 줄 140:
 ===지나치게 강한 결합은 독립성을 저하=== ===지나치게 강한 결합은 독립성을 저하===
 ===다른 집합과의 유연성 저하=== ===다른 집합과의 유연성 저하===
 +- TAB1 + TAB2 + TAB3
  
 ====== 4.2.2 부분적인 클러스터링 ====== ====== 4.2.2 부분적인 클러스터링 ======
줄 139: 줄 146:
 ===원래 하나의 테이블이 정규화로 분할된 테이블=== ===원래 하나의 테이블이 정규화로 분할된 테이블===
 ===다른 집합과는 거의 조인하지 않는 경우=== ===다른 집합과는 거의 조인하지 않는 경우===
 +- TAB1 + TAB2(COL1)
 +
 +- CLUSTER(TAB3)
  
 ====== 4.2.3 단일테이블 클러스터링 ====== ====== 4.2.3 단일테이블 클러스터링 ======
줄 145: 줄 155:
  
 ====== 4.2.4 단위 클러스터의 크기 결정 ====== ====== 4.2.4 단위 클러스터의 크기 결정 ======
 +{{:notepad:테이블2.jpg|}}
  
 ====1. 블록당 유효 저장공간 크기 = (블록크기 – 블록헤더 크기) * (100-PCTFREE)/100==== ====1. 블록당 유효 저장공간 크기 = (블록크기 – 블록헤더 크기) * (100-PCTFREE)/100====
 +
 + - (8000-100)*0.9=7110
  
 ====2. 로우의 평균 길이 산정==== ====2. 로우의 평균 길이 산정====
 +
 + - 평균로우 길이 100바이트로 가정
  
 ====3. 클러스터키 별 로우 수를 구한다.==== ====3. 클러스터키 별 로우 수를 구한다.====
 +  
 +  SELECT AVG( CASE WHEN row_cnt > 71 THEN 71 ELSE row_cnt END)
 +         average_row_count
 +  FROM ( SELECT cluster_key_columns, count(*) row_cnt
 +         FROM table_name
 +         WHERE sampling_conditions....
 +         GROUP BY  cluster_key_columns );
  
 ====4. 단위 클러스터의 크기를 계산하고 결정한다.==== ====4. 단위 클러스터의 크기를 계산하고 결정한다.====
 +
 +- AVG_ROW_LEN * average_row_count
 +
 +- 7110/2000 =3.5
 +
 +- 블록에 3개까지 단위클러스터가 존재.
 +
 +
 +==== *클러스터링 생성절차 예 ( SALES TABLE )*====
 +
 +===1. 클러스터 생성===
 +       CREATE CLUSTER sales_cluster (sale_date varchar2(8)) 
 +       STORAGE ( storage_clause……)
 +       PCTFREE 10 PCTUSED 60
 +       SIZE  2000;
 +
 +===2. 클러스터 인덱스 생성===
 +      CREATE INDEX sales_cluster_idx 
 +      ON CLUSTER sales_cluster
 +      PCTFREE 2
 +      STORAGE (INITIAL 20K NEXT 10K);
 +
 +===3. 기존테이블 명칭 변경===
 +      RENAME  sales TO  sales_copy ;
 +      
 +===4. 클러스터내에 테이블 생성===
 +     CREATE TABLE sales
 +     ( saleno     varchar2(6) not null,
 +       sale_dept  char(4),
 +       sale_date  varchar2(8) not null,
 +       …………………………………………………………… )
 +     CLUSTER  sales_cluster  (sale_date) ;
 +     
 +===5. 테이블 내에 데이터 저장===
 +     INSERT INTO sales
 +     SELECT * FROM sales_copy 
 +     WHERE sale_date >= '20010101';
 +
 +===6. 기존 테이블 삭제, 새로운 인덱스 생성===
 +     DROP TABLE sales_copy  ;
 +     CREATE INDEX  …………………………………………………;
 +
  
  
줄 158: 줄 222:
  
 ====- 클러스터 키 컬럼을 첫번째로 하는 결합 인덱스가 존재하면====  ====- 클러스터 키 컬럼을 첫번째로 하는 결합 인덱스가 존재하면==== 
-====  경우에 따라 클러스터를 사용하지 않고 결합 인덱스를 사용하는 실행계획을 수립====+====    경우에 따라 클러스터를 사용하지 않고 결합 인덱스를 사용하는 실행계획을 수립====
  
 ====- 클러스터가 반드시 사용되어지기를 원한다면 액세스 경로를 고정시킨다.==== ====- 클러스터가 반드시 사용되어지기를 원한다면 액세스 경로를 고정시킨다.====
notepad/vleeky.1275488741.txt.gz · 마지막으로 수정됨: 2010/06/02 23:25 저자 vleeky