문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
notepad:vleeky [2010/06/02 23:33] vleeky |
notepad:vleeky [2010/06/02 23:55] vleeky |
||
---|---|---|---|
줄 128: | 줄 128: | ||
====== 4.2 클러스터링 형태의 결정 기준 ====== | ====== 4.2 클러스터링 형태의 결정 기준 ====== | ||
+ | {{: | ||
+ | ===테이블 가정=== | ||
+ | - TAB3, TAB4는 대용량의 데이터를 가짐 | ||
+ | |||
+ | - TAB3 는 매우 빈번하기 COL3의 대량을 처리범위에서 TAB2와 TAB1을 조인 | ||
+ | |||
+ | - TAB4 는 COL4로 자주 넓은 범위를 처리 | ||
====== 4.2.1 포괄적인 클러스터링 ====== | ====== 4.2.1 포괄적인 클러스터링 ====== | ||
줄 133: | 줄 140: | ||
===지나치게 강한 결합은 독립성을 저하=== | ===지나치게 강한 결합은 독립성을 저하=== | ||
===다른 집합과의 유연성 저하=== | ===다른 집합과의 유연성 저하=== | ||
+ | - TAB1 + TAB2 + TAB3 | ||
====== 4.2.2 부분적인 클러스터링 ====== | ====== 4.2.2 부분적인 클러스터링 ====== | ||
줄 138: | 줄 146: | ||
===원래 하나의 테이블이 정규화로 분할된 테이블=== | ===원래 하나의 테이블이 정규화로 분할된 테이블=== | ||
===다른 집합과는 거의 조인하지 않는 경우=== | ===다른 집합과는 거의 조인하지 않는 경우=== | ||
+ | - TAB1 + TAB2(COL1) | ||
+ | |||
+ | - CLUSTER(TAB3) | ||
====== 4.2.3 단일테이블 클러스터링 ====== | ====== 4.2.3 단일테이블 클러스터링 ====== | ||
줄 144: | 줄 155: | ||
====== 4.2.4 단위 클러스터의 크기 결정 ====== | ====== 4.2.4 단위 클러스터의 크기 결정 ====== | ||
+ | {{: | ||
====1. 블록당 유효 저장공간 크기 = (블록크기 – 블록헤더 크기) * (100-PCTFREE)/ | ====1. 블록당 유효 저장공간 크기 = (블록크기 – 블록헤더 크기) * (100-PCTFREE)/ | ||
+ | |||
+ | - (8000-100)*0.9=7110 | ||
====2. 로우의 평균 길이 산정==== | ====2. 로우의 평균 길이 산정==== | ||
+ | |||
+ | - 평균로우 길이 100바이트로 가정 | ||
====3. 클러스터키 별 로우 수를 구한다.==== | ====3. 클러스터키 별 로우 수를 구한다.==== | ||
+ | | ||
+ | SELECT AVG( CASE WHEN row_cnt > 71 THEN 71 ELSE row_cnt END) | ||
+ | | ||
+ | FROM ( SELECT cluster_key_columns, | ||
+ | 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. 클러스터 생성=== | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ===2. 클러스터 인덱스 생성=== | ||
+ | CREATE INDEX sales_cluster_idx | ||
+ | ON CLUSTER sales_cluster | ||
+ | PCTFREE 2 | ||
+ | STORAGE (INITIAL 20K NEXT 10K); | ||
+ | |||
+ | ===3. 기존테이블 명칭 변경=== | ||
+ | RENAME | ||
+ | | ||
+ | ===4. 클러스터내에 테이블 생성=== | ||
+ | | ||
+ | ( saleno | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ===5. 테이블 내에 데이터 저장=== | ||
+ | | ||
+ | | ||
+ | WHERE sale_date >= ' | ||
+ | |||
+ | ===6. 기존 테이블 삭제, 새로운 인덱스 생성=== | ||
+ | DROP TABLE sales_copy | ||
+ | | ||
+ | |||
줄 157: | 줄 222: | ||
====- 클러스터 키 컬럼을 첫번째로 하는 결합 인덱스가 존재하면==== | ====- 클러스터 키 컬럼을 첫번째로 하는 결합 인덱스가 존재하면==== | ||
- | ==== 경우에 따라 클러스터를 사용하지 않고 결합 인덱스를 사용하는 실행계획을 수립==== | + | ==== 경우에 따라 클러스터를 사용하지 않고 결합 인덱스를 사용하는 실행계획을 수립==== |
====- 클러스터가 반드시 사용되어지기를 원한다면 액세스 경로를 고정시킨다.==== | ====- 클러스터가 반드시 사용되어지기를 원한다면 액세스 경로를 고정시킨다.==== |