본문 바로가기
DB/Oracle

PCTFREE와 PCTUSED

by Lohen 2016. 2. 4.

문서에 대하여

PCTFREE

  블럭내에 이미 존재하고 있는 Row에 Update가 가능하도록 예약시켜 놓는 블럭의 퍼센트 값을 지정 합니다.

  예로 "PCTFREE 20" 으로 설정을 하면, 데이터 블록의 20%를 사용 가능한 빈 영역으로 유지하여 각 블록에 있는 행을 갱신하는데 사용한다는 의미입니다.

  PCTFREE의 기본값은 10% 입니다.

  PCTFREE와 PCTUSED의 합이 100을 초과하지 않는 범위 내에서 0에서 99까지의 값을 PCTFREE 값으로 사용할 수 있습니다.

  INDEX값은 수정이 자주 발생하지 않으므로 PCTFREE는 5%정도가 적당합니다.

PCTFREE가 적을 경우

  - 기존 테이블 행 갱신에 의한 확장을 위해 적은 공간을 확보 합니다.

  - 많은 로우가 한 블럭에 입력 가능합니다.

  - 수정이 적은 세그먼트에 적합 합니다.

PCTFREE가 클 경우

  - 블럭당 적은 row가 입력됩니다. 즉 같은 row를 입력하기 위해서 많은 블럭이 소요 됩니다.

  - 행 조각을 자주 체인화할 필요가 없으므로 수정 수행 속도가 증가 합니다.

  - 자주 수정되는 세그먼트에 적합 합니다.

PCTUSED

  오라클 서버가 테이블의 각 데이터 블록에 대해 유지하려는 사용 공간의 최소 백분율로써 데이터 세그먼트에 대해 지정합니다

  예로 "PCTUSED 40" 으로 설정하면, 데이터 블록의 사용영역이 39%보다 적어지지 않으면 새로운 행을 삽입할 수 없음을 의미 합니다.

  PCTUSED의 기본값은 40% 입니다.

PCTUSED값이 적을 경우

  - 블록이 재사용되는 일이 적어질 수 있으므로 처리 비용이 감소 합니다.

  - 데이터베이스에서 사용되지 않은 공간이 증가 합니다.

PCTUSED값이 클 경우

  - 블록이 재사용되는 일이 많아질 수 있으므로 처리 비용이 증가 합니다.

  - 공간 사용도를 향상 시킵니다.

PCTFREE와 PCTUSED값을 선택하는 예

① UPDATE시 ROW의 크기가 증가 될 때
  • - PCTFREE = 20
  • - PCTUSED = 40

② Insert, Delete가 자주 발생하지만 Update시 ROW의 크기가 증가 되지 않을 때
  • - PCTFREE = 5
  • - PCTUSED = 60

③ 테이블이 매우 크지만 대부분 Read Only Transaction 일 때
  • - PCTFREE = 5
  • - PCTUSED = 90


반응형

'DB > Oracle' 카테고리의 다른 글

Range Partition 이란?  (0) 2016.02.04
PCTFREE,PCTUSED,FREELIST  (0) 2016.02.04
오라클 인스턴스 추가 생성  (0) 2016.02.04
oracle sid 학인 방법  (0) 2016.02.04
LRU 알고리즘 이란?  (0) 2016.02.04