====== 인덱스 일체형 테이블 ====== === 분리형과 일체형의 비교 === | 구분 ^ Ordinary Table ^ Index-Organized Table ^ ^로우의 유일 식별자|ROWID|기본키| ^기본키 미지정|허용|허용하지 않음 \\ (반드시 기본키가 존재해야 함)| ^Secondary 인덱스의 생성|ROWID사용|논리적 ROWID나 비트맵 인덱스| ^로우 액세스|ROWID로 액세스|기본키로 액세스| ^전체 테이블 스캔|임의의 순서로 로우를 리턴함|기본키의 순서로 로우를 리턴함| ^클러스터링 가능 여부|Cluster에 저장 가능|Cluster에 저장 불가능| ^LONG, LONG RAW, LOB|LONG, LOB중 하나 포함|LOB는 가능하나 LONG은 불가능| ^분산(Distributed)SQL|허용|버전에 따라 차이가 있음| ^데이터 이중화(Replication)|허용|버전에 따라 차이가 있음| ^파티션 적용|허용|버전에 따라 차이가 있음| ^병렬처리|허용|버전에 따라 차이가 있음 \\ CTAS를 통한 병렬 데이터 로딩 \\ 파티션 및 일반 IOT의 병렬 고속 전체 스캔(FFS) \\ 파티션 IOT의 병렬 인덱스 스캔| [Table 1. Regular Table vs Index-Organized Table] {{study:oracle:newmassdatabasesolutions:iot_vs_regular.gif|}} \\ [FIG 1. Regular Table vs Index-Organized Table] * 원본 : http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/schema.htm#sthref1038 \\ \\ === 일체형 테이블의 구조 및 특징 === * 인덱스 경유 하지 않으므로 넓은 범위 처리의 효율성이 좋다. * 인덱스만 스캔하는 경우에는 효율성이 떨어진다. * 단점 - 추가 인덱스 생성 : ROWID를 가지지 않으므로 추가 인덱스는 기본키를 사용해야하는데, 기본키로 액세스는 ROWID보다 부담이 크다. \\ ⇒ 이런 경우에는 해쉬 클러스터를 활용하는 것이 좋다. - 로우의 길이가 변화할 때마다 발생할 수 있는 오버플로우 * 일반 컬럼이 같이 있으므로 길이가 증가 할 수 있고, \\ 로우마다 일정한 길이를 가지고 있지 않을 경우 발생할 수 있다. * 기본값으로 설정할 경우에도 오버플로우가 발생 할 수 있다. * 파라미터 설정으로 오버플로우 발생을 예방 가능 \\ \\ === 논리적 ROWID와 물리적 주소(Physical Guess) === === 오버플로우 영역(Overflow Area) === === 일체형 테이블 생성 ===