말 그대로입니다.
테이블 ta를 ts_web_d 테이블스페이스에 만들었다면
그 ta 테이블의 인덱스는 ts_web_i 테이블스페이스에
만들라는 것이며, 이 두개의 테이블스페이스는
별도의 물리적 디스크에 있어야 한다는
것입니다. 그래야 테이블/인덱스를 동시에
읽을때, 각각 다른 디스크가 동시에 I/O가
발생하여 I/O contention이 적어지거든요.
예를 들면 두개의 파일시스템이 있다고 합시다.
/u01 : 1번째 디스크, 또는 첫번째 RAID5
/u02 : 2번째 디스크, 또는 두번째 RAID5
이제부터 /u01과 /u02에 각각 파일을 만들면
물리적으로 디스크가 달라지게 됩니다.
create tablespace ts_web_d datafile
'/u01/oradata/ORCA/ts_web_d01.dbf' size 100M ;
create tablespace ts_web_i datafile
'/u02/oradata/ORCA/ts_web_i01.dbf' size 100M ;
( 여기서 ORCA는 SID 이름입니다. )
그리고 다음과 같이 테이블/인덱스를 만듭니다.
create table ta (
.... )
tablespace ts_web_d
storage ( initial 1M next 1M pctincrease 0 )
;
create index ta_uk on ta
( .... )
tablespace ts_web_i /* 테이블과는 다른 디스크에 저장됨 */
storage ( initial 1M next 1M pctincrease 0 )
;
이렇게 하면 테이블/인덱스가 별도의 테이블스페이스에
저장될 뿐만아니라 별도의 디스크에 저장이 됩니다.
이렇게 되면 디스크 I/O가 분산될 수 있지요.
만약 하나의 디스크 밖에 없다고 해도 이렇게
테이블스페이스를 미리 분리해 둔다면
나중에 규모가 커져서 디스크를 추가 할때로
I/O 분산이 쉬워집니다.
도움이 되었기를...
> 안녕하세요....
>
> 어느 참고서를 보다가.... 오라클 디비생성시
> 테이블과 인덱스에 대한 데이타를 분리된 디스크 드라이브에
> 설정된 별도 테이블 스페이스에 설정하면 속도가 향상된다고
> 나와있는데... 의미는 알겠지만..
>
> 실제로 별도의 테이블스페이스에 테이블과 인덱스를 분리하는
> 방법을 모르겠습니다.... 이에 대한 답변 부탁드립니다.
>
> 그럼 이만... 감사합니다.
|