ALTIBASE HDB 5.3.3 기초강좌
디스크 테이블스페이스 1 0 54,935

by Altibase 디스크 테이블스페이스 CREATE TABLESPACE DATAFILE AUTOEXTEND 세그먼트 [2011.11.07]


디스크 테이블스페이스 개념

[그림] 디스크 테이블스페이스 구조
  • 디스크 테이블스페이스 구조

 

  디스크 테이블스페이스를 구성하는 최소의 논리적 단위이자 레코드가 저장되는 최소의 영역은 Page이며, ALTIBASE HDB는 이러한 Page들을 효율적으로 할당하기 위해 익스텐트(Extent)라는 단위를 사용합니다.

  테이블스페이스 내에서 테이블, 인덱스 등의 데이터베이스 저장 오브젝트들을 할당하는 단위로써 세그먼트(Segment)라는 개념을 사용하는데, 세그먼트는 익스텐트들로 구성됩니다.

  디스크 테이블스페이스에 저장되는 모든 데이터는 디스크의 데이터 파일에 저장되어 관리됩니다.

  디스크 I/O를 줄이기 위해 일부 데이터의 복사본을 버퍼라고 하는 메모리 공간에 적재해서 사용하지만 실제 데이터는 디스크 영역에 저장되어 있습니다.

디스크 테이블스페이스 관리

  디스크 테이블스페이스를 사용하다보면, 실제로는 테이블에 데이터가 들어있지 않아도 테이블스페이스에서는 테이블에 할당(Alloc)을 해줬다고 판단하는 경우가 발생하는데, 이런 경우에는 다른 테이블에서는 더 이상 공간을 할당 받을 수가 없게 됩니다.

  그러면 왜 이런 문제들이 발생하는지 디스크 테이블스페이스의 페이지 상태에 대해서 알아보도록 하겠습니다.

  • [표 1] 페이지 상태
객체 FREE USED
TABLESPACE - 특정 테이블에 할당되지 않은 공간
- Extent 단위로 특정 테이블에 할당 가능
- 테이블에 할당한 공간
- 테이블에서 반납하기 전까지 다른 테이블에서 사용할 수 없음
TABLE - 테이블이 할당 받은 공간 중 데이터가 들어 있지 않은 공간
- 해당 테이블 내에서 재사용 가능
- 테이블이 할당 받은 공간 중 데이터가 들어 있는 공간
- 데이터를 삭제하지 않으면 재사용 불가

 

  페이지의 상태가 [표1]과 같기 때문에 테이블에 데이터가 없어도 테이블스페이스에서는 해당 페이지를 “USED” 상태로 판단할 수 있습니다.

  그러면, 테이블의 데이터를 삭제할 경우 페이지의 상태가 어떻게 변하는지 알아보겠습니다. 먼저, 테이블에 DELETE 를 수행하면 아래와 같이 변합니다.

  • - Table 안에서 Page 상태가 UsedFree 로 전환(해당 Table 내에서 재사용 가능)
  • - Tablespace로 Page를 반환하지 않음

 

  따라서, DELETE 로 데이터를 삭제하면 테이블 내에서는 페이지 상태가 FREE가 되어 재사용할 수 있지만 테이블스페이스에 반환하지 않기 때문에 테이블스페이스 입장에서는 계속 할당을 해준 상태가 되며, 다른 테이블에게 할당해줄 수 없는 공간이 됩니다.

  그러나 데이터를 TRUNCATE로 삭제하면 페이지의 상태가 아래와 같이 변합니다.

  • - Table에 할당 되었던 Page를 Tablespace에 반환함
  • - Table에 할당되었던 Tablespace의 Page 상태는 UsedFree로 전환(다른 Table에서 할당 받아 사용 가능)

 

  TRUANCATE로 데이터를 삭제하면 해당 페이지를 테이블스페이스에 반환하기 때문에 테이블스페이스에서는 FREE 한 공간으로 인식하고 다른 테이블에 공간을 할당할 수 있습니다.

디스크 테이블스페이스 생성 구문

  디스크 테이블스페이스를 생성하는 구문은 다음과 같습니다.

 
CREATE [DISK] [DATA] TABLESPACE tablespace_name 
DATAFILE 'datafile_name' 
[SIZE size (K | M | G) ] [REUSE]
[AUTOEXTEND [ON [NEXT size][MAXSIZE size ] | OFF)];
  
    
  • - DATAFILE 'datafile_name' : 디스크 테이블스페이스를 구성하는 데이터 파일을 명시한다.
  • - SIZE size : 데이터 파일의 크기를 명시한다.
  • - REUSE : 기존 데이터 파일의 재사용 여부를 나타낸다. 명시한 이름을 가진 파일이 이미 존재한다면 반드시 REUSE를 명시해야 한다. 그러나 존재하는 파일을 재사용할 때에는 기존 데이터가 소실되기 때문에 주의가 필요하다.
  • - ON : 자동 확장이 가능함을 나타낸다.
  • - OFF : 자동 확장이 불가능함을 나타낸다.
  • - NEXT size : 파일의 자동 확장 시 다음에 확장할 공간의 크기를 명시한다.
  • - MAXSIZE size : 자동 확장 시 확장할 수 있는 최대 공간의 크기를 명시한다.

디스크 테이블스페이스 생성 예제

  데이터 파일 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

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입