[ Oracle - Clustered Table ]
1. Cluster
. 정의 : 특정 조건을 기준으로 데이터를 하나로 묶어서 관리하는 기법
2. Clustered Table
. 정의 : 특정 조건을 기준으로 데이터를 하나로 묶어서 관리되는 테이블
. index : clustered index 존재
clustered index는 null도 존재
. non clustered : 보통 table 및 index
3. 장.단점
. 특정그룹을 찾을 때 특정Block을 모두 읽으면 되므로 읽기가 아주 빠르다.
. 같은 데이터 블록을 공유하는 1개 이상의 테이블의 그룹
- join에서 같이 자주 사용되는 공통 컬럼을 공유
- disk i/o가 감소 됨 (join을 안해도 되므로)
- 클러스터 테이블을 조인하는 경우 엑세스 시간이 향상된다.
- 단점 : Full Tablescan은 일반 테이블보다 느리다.
4 생성방법
- 2개의 테이블이 자주 join되어 하나의 cluster에 저장하는 예제
a. Cluster만들기
b. Cluster Index만들기
c. Cluster table 생성
CREATE CLUSTER cls_emp_dept(deptno NUMBER(2))
SIZE 600
TABLESPACE users
STORAGE (INITIAL 200K
NEXT 300K
MINEXTENTS 2
MAXEXTENTS 20
PCTINCREASE 33);
CREATE INDEX IDX_CLS_EMP_DEPT
ON CLUSTER CLS_EMP_DEPT
TABLESPACE users;
--아래 예제는 기존 EMP테이블을 활용한 예제.
--보통 컬럼들을 기술해서 만들어야 됨
CREATE TABLE EMP1
CLUSTER CLS_EMP_DEPT(DEPTNO)
AS
SELECT * FROM EMP;
CREATE TABLE DEPT1
CLUSTER CLS_EMP_DEPT(DEPTNO)
AS
SELECT * FROM DEPT;
--조회
SELECT e.empno, e.deptno, e.rowid, d.rowid, d.deptno
FROM emp1 e, dept1 d
WHERE e.deptno = d.deptno
ORDER BY e.deptno;
. ROWID가 거의 비슷하다. 같은 저장 공간이기 때문
. ROWID : OFBR : Object(6자리) + file(3자리) + block(6자리) + row(3자리)
- 위 결과를 보면 다른 Object 이지만 같은 file, 같은 block에 저장 됨
.
5. 특징
. 지정된 컬럼값의 순서대로 row를 저장시키는 방법
. 하나 혹은 그 이상의 테이블을 같은 클러스터내 저장 가능
. 엑세스 기법이 아니라 액세스 효율향상 시키는 물리적 저장기법
. 검색의 속도는 높여주나 DML속도는 저하된다.
. 분포도가 넓을수록 유리
6. 사용하기 적합한 조건
. 6블럭 이상의 테이블
. 넓은 범위를 자주 액세스 해야 하는 경우
. 인덱스를 사용한 처리가 부담이 되는 넓은 분포도
. 여러 개의 테이블이 빈번히 조인되는 경우
. 수정이 자주 발생하지 않는 경우 (clustered 가 된 컬럼. 위예제는 deptno)
- 이유 : clustered된 컬럼이 변경되면 레코드가 delete, insert가 발생 하기 때문
담배, 술, 삼각기밥
10대, 20대..., 10대 담배필때.. 구몬이 3일 밀렸어
'(DB) Oracle 튜닝 > 쌍용튜닝교육' 카테고리의 다른 글
실행계획 - join (0) | 2018.02.10 |
---|---|
자주 사용하는 SQL (0) | 2018.02.10 |
DB 튜닝. hint 목록 (0) | 2018.01.27 |
Oracle-실행계획 개별 (0) | 2018.01.27 |
Oracle-튜닝.수행내역 이력을 파일로 저장 (0) | 2018.01.27 |