로우가 한 조각으로 존재하기 위해서는 로우의 길이가 변화(보통 증가)할 때마다 연결된 상태로 들어갈 수 있는 빈 공간을 찾아 옮겨다닐 수 밖에 없다
로우의 길이가 너무 많이 커져 로우의 길이가 늘어날때 사용할 여유공간이 부족하게 되었다면 다른 블록을 사용 할 수 밖에 없다.
이때 방식이 로우마이그래이션과 체인이다
AAAHZ0AALAAAAAiAAA
표시는 18byte 실제크기는 10byte
6 자리 : 데이터오브젝트번호 = DB Segment 식별정보(해당 로우가 속해있는 오브젝트번호)
3 자리: Relative file = tablespace의 상대적 datafile번호(해당 로우가 속해있는 데이터파일번호)
6 자리: Block number = Row를 포함하는 DataBlock번호(해당 로우가 속해있는 데이터파일의 데이터 블록주소값)
3 자리: Row number = Block에서의 Row의 Slot : 데이터 블록 내에서 해당 로우의 주소값
ROWID는 테이블에 존재하는것이 아니라 인덱스에 존재한다.
ROWID에는 로우의 구체적인 위치정보가 들어있는 것이 아니라 방(슬록)번호가 있다. 이 슬롯번호속에 로우의 위치 전보가 들어 있다
이것은 블록내의 로우의 위치가 이동하더라도 ROWID는 결코 변하지 않고 슬롯번호가 변한다.
분리형 테이블의 특징인 '임의의 위치'에 저장으로 인해 원하는 값을 찾기위해 필연적으로 여러 블럭을 찾아 보아야 한다
이미 액세스해 두었던 블록에서 원하는 로우를 찾을 확률이 높다면 물리적으로 액세스할 블럭의 량은 분명히 줄어들 것이다.
임의의 위치에 흩어져 있더라도 얼마나 주변에 모여 있느냐에 따라 액세스 효율은 커다란 영향을 받게 된다.
인덱스의 컬럼값으로 정렬되어 있는 인덱스 로우의 순서와 테이블에 저장되어 있는 데이터 로우의 위치가 얼마나 비슷한 순서로 저장되어 있는지의 정도를 나타낸 것을 '클러스터링 팩터'라고 표현한다
- 강좌 URL : http://www.gurubee.net/lecture/2555
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.