테이블 파티셔닝에 대해 공부하면서 오라클을 이용한 파티셔닝 생성 구문에서 이해가 안되는 create 구문이 존재하여 검색을 해보게 되었다.

그리고 그에 대한 내용을 정리해보았다.

 

테이블 생성

CREATE TABLE  NEW_EMP (ENO NUMBER(10), ENAME VARCHAR2(10)
)
TABLESPACE USERS
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
STORAGE
(
   INITIAL 65536
   NEXT 1048576
   MINEXTENTS 1
   MAXEXTENTS UNLIMITED
   BUFFER_POOL DEFAULT
   PCTINCREASE 50
)
LOGGING
DISABLE ROW MOVEMENT ;

 

TABLESPACE

  • 테이블이 생성될 TABLESPACE를 지정해주는 옵션
  • 테이블이나 인덱스 등을 넣기 위한 공간
  • 테이블스페이스는 한 개 이상의 세그먼트를 보관할 수 있다.
❓ 세그먼트(Segment)
- 테이블이나 인덱스 등 데이터를 보관하는 것을 의미
- 세그먼트는 한 개 이상의 Extent로 구성
❓ 익스텐트(Extent)
- 주로 관리를 쉽게 하기 위한 데이터의 집합
- Extent는 연속된 블록으로 구성
❓ 블럭(Block)
- 주로 관리를 쉽게 하기 위한 데이터의 집합
- 오라클 블록은 OS 블록으로 구성된다.
- 일반적으로 오라클 블록을 최소단위라 여긴다.

 

PCTFREE

  • 블럭 내에 이미 존재하고 있는 Row에 Update가 가능하도록 예약시켜 놓는 블럭의 퍼센트 값을 지정한다.
  • ex) 'PCTFREE 20'으로 설정하면, 데이터 블록의 20%를 사용 가능한 빈 영역으로 유지하여 각 블록에 있는 행을 갱신하는 데 사용한다는 의미이다.
  • 기본값은 10%이다.
  • INDEX 값은 수정이 자주 발생하지 않기 때문에 PCTFREE는 5%가 적당하다.
  • PCTFREE가 적을 경우
    • 기존 테이블 행 갱신에 의한 확장을 위해 적은 공간을 확보한다.
    • 많은 Row가 한 불럭 안에 INSERT 될 수 있다.
    • 수정이 적은 세그먼트에 적합하다.
  • PCTFREE가 클 경우
    • 블럭 당 적응 Row가 INSERT 된다.
    • 즉, 같은 Row를 입력하기 위해 많은 블럭이 필요하다.
    • Row의 조각을 자주 Caching할 필요가 없으므로 수행속도가 증가한다.
    • 자주 수정되는 세그먼트에 적합히다.

 

PCTUSED

  • 오라클 서버가 테이블의 각 데이터 블록에 대해 유지하려는 사용 공간의 최소 백분율
  • 데이터 세그먼트에 대해 지정한다.
  • ex) 'PCTUSED 40'으로 설정하면, 데이터 블록의 사용영역이 39%보다 적어지지 않으면 새로운 행을 삽입할 수 없음을 의미한다.
  • 기본값은 40%이다.
✨ PCTFREE와 PCTUSED의 합이 100을 초과하지 않는 범위 내에서 0에서 99까지의 값을 PCTFREE 값으로 사용할 수 있다.

 

INITRANS

  • 세그먼트의 속성 중 동시 트랜잭션 수를 제어하는 옵션
  • 기본값은 2이며, 최소값도 2이다.

 

MAXTRANS

  • 세그먼트의 속성 중 동시 트랜잭션 수를 제어하는 옵션
  • 10g 버전 이후로 무시되는 파라미터 이다.
  • 기본값은 255이며 최소값도 255로, 고정값이다.

 

STORAGE

데이터베이스 객체를 저장하는 방법을 지정할 수 있다.

 

INITIAL

  • 세그먼트가 생성되면서 할당될 때 첫 번째 확장 영역의 크기
  • 세그먼트가 생성될 때 INITIAL의 크기로 처음 Extent가 생성되고, 현재 Extent가 꽉 차면 다음과 같은 방식으로 새로운 Extent를 할당한다.
    • Next Extent = Next * (1+Pctincrease/100)

 

NEXT

  • 다음 Extent의 크기
  • 두 번째 확장영역의 NEXT의 원래 크기와 동일하며, 다음부터의 NEXT는 (1+Pctincrease/100)과 Next의 이전 크기를 곱한 크기로 설정된다.

 

MINEXTENTS

생성할 Extent의 최소값

 

MAXEXTENTS

생성할 Extent의 최대값

 

PCTINCREASE

  • Extent의 증가율
  • 기본값은 50이다.

 

LOGGING

  • 로깅 옵션(기본값으로 설정되어있다.)
  • 테이블 작업시 REDO를 생성한다.
  • NOLOGGING으로 옵션을 변경할 수 있지만, 이 경우 복구가 잘 되지 않는다.
  • NOLOGGING 옵션은 REDO를 생성하지 않는다.
  • NOLOGGING을 사용하는 경우
    • 객체의 초기 생성
    • Direct Path 모드에서의 SQL *Loader 사용
    • 재구성(Rebuild)

 

DISABLE ROW MOVEMENT

  • 행 이동의 비활성화
  • 행 이동을 활성화 할 경우 flashback table, shrink 할 때 enable로 바꾸고 작업을 한다.

참고

https://positivemh.tistory.com/329

http://www.gurubee.net/lecture/1103

https://12bme.tistory.com/290

https://myalpaca.tistory.com/13

https://12bme.tistory.com/304