클러스터 > 테이블 > 인덱스
클러스터로 생성된 오브젝트내 테이블이 생성됨
테이블의 상위 개념이다
클러스터링이란 어떤 정해진 컬럼값을 기준으로 동일한 값을 가진 모든 로우를 같은 장소에 저장하여 같은 값을 가지는 여러 로우를 엑세스할 랜덤 엑세스를 최소함할수 있는 물리적 저장 기법이다.
일반 인덱스의 경우 테이블의 로우마다 하나씩 인덱스 로우를 가지지만,
클러스터 인덱스의는 클러스터링 컬럼의 값마다 하나씩의 인덱스로우를 가진다.
클러스터링의 효과는 클래스터링 팩터(Clustering Factor)의 향상에 있다. 클러스터링 팩터란 엑세스 하고자 하는 데이터들이 얼마나 같이 모여있느냐는 것을 말한다.
따라서 클러스터링은 분포도가 넓어야 유리 해진다. 따라서 인덱스의 가장 큰 취약점을 해결해줄수 있는 역할을 한다.
클러스터링은 단지 검색의 효율을 높혀 줄뿐이며 입력, 수정, 삭제시에는 추가적인 부하가 발생된다
1) 입력시 부하
클러스터링 테이블에 데이터를 입력하게 되면 정해진 위치를 찾아서 넣어야 하기때문에 추가적인 부하가 있을 수 밖에 없다.
2) 수정시 부하
수정하는 경우의 부하는 2가지인데 하나는 클러스터 컬럼의 값을 수정 시키는경우, 다른하나는 그 외의 컬럼을 수정시키는 경우 첫번째 클러스터 컬럼의 값을 수정하는경우에는 컬럼의 값만 수정되는 것이 아니라 추가적인 클러스터 체인블럭이 발생한다는 뜻이된다. 따라서 빈번한 수정이 발생하는 컬럼의 경우에는 클러스터 컬럼으로 지정해서는 안되다.
3) 삭제시 부하
삭제의경우에는 상관없지만 Drop의 경우 일반테이블의 경우에는 로우들을 일일이 찾아서 삭제하는게 아니라 자료사전(Data Dictionary)의 정보를 삭제시키고 할당된 저장공간을 해제시키기만 하므로 아주 빠르다. 또한 Drop은 DDL이므로 롤백이 불가능하다.(Rollback Segment에 저장하지 않는다)
하지만 클러스터링 테이블을 삭제시에는 내부적으로 Delete를 수행한다. 따라서 롤백 세그먼트에 내용이 저장되게 된다. 테이블 데이터가 클경우 롤백세그먼트의 용량이 확보되어 있지 않을경우 삭제가 되지않고 롤백이 되게 된다.
'DB' 카테고리의 다른 글
MYSQL 정보쿼리 (0) | 2012.07.29 |
---|---|
클러스터 인덱스 & non클러스터 인덱스 (0) | 2012.07.29 |
하나의 컬럼 안에 있는 데이터만 바꾸기 (0) | 2012.07.29 |
MYSQL OUTER JOIN (0) | 2012.07.29 |
MYSQL 중복 체크 쿼리 (0) | 2012.07.29 |