힙 구조 테이블

힙 구조 테이블 (Heap Organized Table)
  • 기본
  • 큰 영역의 공간을 임의의 방식으로 관리
  • 데이터를 특정 순서로 정렬하여 저장하지 않고, 가장 적절한 장소에 저장
  • 입력 순서대로의 정렬을 원한다면
    • Sequance 나 Sysdate, Systimestamp 를 함께 입력해야 함
    • 정렬구문이 반드시 있어야 함


CREATE TABLE 옵션 확인
  • 최대한 간단한 구문으로 테이블 생성
  • dbms_metadata 패키지를 이용하여 장황한 옵션 구문 확인

SQL> CREATE TABLE t(x INT PRIMARY KEY, y DATE, z CLOB);

테이블이 생성되었습니다.

SQL> SELECT dbms_metadata.get_ddl('TABLE', 'T') FROM dual;

DBMS_METADATA.GET_DDL('TABLE','T')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."T"
   (    "X" NUMBER(*,0),
        "Y" DATE,
        "Z" CLOB,
         PRIMARY KEY ("X")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"  ENABLE
   ) SEGMENT CREATION DEFERRED
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"
 LOB ("Z") STORE AS BASICFILE (
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION
  NOCACHE LOGGING )


힙 구조 테이블에서 중요하고 의미있는 5가지 파라미터
파라미터MSSMASSM내용
FREELISTOX다수의 동시 사용자가 대량의 데이터를 삽입하는 환경이라면,
두 개 이상의 FREELIST를 설정하는 것이 유리
PCTFREEOOINSERT 수행을 할 때 블록을 얼마나 채울 것인지를 의미한다.
UPDATE에 의해 일어나는 로우이전을 결정하게 되므로 테이블을 어떻게 사용할 것인지에 따라 설정하여야 한다.
PCTUSEDOXPCTUSED보다 적은 공간이 사용된 블록은 새로운 로우들이 삽입될 수 있는 후보가 될 수 있다.
PCTFREE와 마찬가지로 테이블이 어떻게 사용될지를 고려하여 이 옵션을 적절히 설정해야 한다.
INITRANSOO블록에 기본적으로 할당된 트랜잭션 슬롯의 개수다. 기본값은 2다.
동일한 블록을 동시에 갱신하는 트랜잭션이 많은경우라면, 이 값을 증가시켜야만 한다
COMPRESS
NOCOMPRESS
OO9i R2 부터 직접 경로 수행인 경우에만 이 옵션을 적용 가능
11g R1 부터는 COMPRESS FOR OLTP, COMPRESS BASIC 이 더해졌다


LOB 세그먼트는 PCTFREE/PCTUSED 에 영향을 받지 않는다.
  • 항상 용량에 맞게 채워진후 완전히 비워졌을 때만 FREELIST 의 가용공간으로 반환된다.