by Altibase 디스크 테이블스페이스 CREATE TABLESPACE DATAFILE AUTOEXTEND 세그먼트 [2011.11.07]
디스크 테이블스페이스를 구성하는 최소의 논리적 단위이자 레코드가 저장되는 최소의 영역은 Page이며, ALTIBASE HDB는 이러한 Page들을 효율적으로 할당하기 위해 익스텐트(Extent)라는 단위를 사용합니다.
테이블스페이스 내에서 테이블, 인덱스 등의 데이터베이스 저장 오브젝트들을 할당하는 단위로써 세그먼트(Segment)라는 개념을 사용하는데, 세그먼트는 익스텐트들로 구성됩니다.
디스크 테이블스페이스에 저장되는 모든 데이터는 디스크의 데이터 파일에 저장되어 관리됩니다.
디스크 I/O를 줄이기 위해 일부 데이터의 복사본을 버퍼라고 하는 메모리 공간에 적재해서 사용하지만 실제 데이터는 디스크 영역에 저장되어 있습니다.
디스크 테이블스페이스를 사용하다보면, 실제로는 테이블에 데이터가 들어있지 않아도 테이블스페이스에서는 테이블에 할당(Alloc)을 해줬다고 판단하는 경우가 발생하는데, 이런 경우에는 다른 테이블에서는 더 이상 공간을 할당 받을 수가 없게 됩니다.
그러면 왜 이런 문제들이 발생하는지 디스크 테이블스페이스의 페이지 상태에 대해서 알아보도록 하겠습니다.
객체 | FREE | USED |
---|---|---|
TABLESPACE |
- 특정 테이블에 할당되지 않은 공간 - Extent 단위로 특정 테이블에 할당 가능 |
- 테이블에 할당한 공간 - 테이블에서 반납하기 전까지 다른 테이블에서 사용할 수 없음 |
TABLE |
- 테이블이 할당 받은 공간 중 데이터가 들어 있지 않은 공간 - 해당 테이블 내에서 재사용 가능 |
- 테이블이 할당 받은 공간 중 데이터가 들어 있는 공간 - 데이터를 삭제하지 않으면 재사용 불가 |
페이지의 상태가 [표1]과 같기 때문에 테이블에 데이터가 없어도 테이블스페이스에서는 해당 페이지를 “USED” 상태로 판단할 수 있습니다.
그러면, 테이블의 데이터를 삭제할 경우 페이지의 상태가 어떻게 변하는지 알아보겠습니다. 먼저, 테이블에 DELETE 를 수행하면 아래와 같이 변합니다.
따라서, DELETE 로 데이터를 삭제하면 테이블 내에서는 페이지 상태가 FREE가 되어 재사용할 수 있지만 테이블스페이스에 반환하지 않기 때문에 테이블스페이스 입장에서는 계속 할당을 해준 상태가 되며, 다른 테이블에게 할당해줄 수 없는 공간이 됩니다.
그러나 데이터를 TRUNCATE로 삭제하면 페이지의 상태가 아래와 같이 변합니다.
TRUANCATE로 데이터를 삭제하면 해당 페이지를 테이블스페이스에 반환하기 때문에 테이블스페이스에서는 FREE 한 공간으로 인식하고 다른 테이블에 공간을 할당할 수 있습니다.
디스크 테이블스페이스를 생성하는 구문은 다음과 같습니다.
CREATE [DISK] [DATA] TABLESPACE tablespace_name DATAFILE 'datafile_name' [SIZE size (K | M | G) ] [REUSE] [AUTOEXTEND [ON [NEXT size][MAXSIZE size ] | OFF)];
데이터 파일 test01.dbf, test02.dbf, test03.dbf 로 구성된 100MB의 test_disk 테이블스페이스를 생성하시오(자동확장 하지 않음).
iSQL> CREATE TABLESPACE test_disk DATAFILE 'test01.dbf', 'test02.dbf', 'test03.dbf' SIZE 100M AUTOEXTEND OFF ;
데이터 파일 test01.dbf, test02.dbf, test03.dbf 로 구성되고, 초기크기가 100MB, 2G까지 자동 확장하는 test_disk 테이블스페이스를 생성
iSQL> CREATE TABLESPACE test_disk DATAFILE 'test01.dbf', 'test02.dbf', 'test03.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 2G ;
- 강좌 URL : http://www.gurubee.net/lecture/2163
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.