정보과학 IT

(Oracle) PCTFREE와 PCTUSED

물곰탱이 2013. 11. 11. 23:16

(Oracle) PCTFREE와 PCTUSED

 

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

 

PCTFREE = 20 / PCTUSED = 40 일 경우

 

http://www.oracleclub.com/lecture/1103