Oracle Admin 강좌 (Oracle9i)
PCTFREE와 PCTUSED 11 3 27,568

by 김정식 PCTFREE PCTUSED BLOCK [2002.01.24]


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 일 경우

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1103

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

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

by 초보영웅 [2007.12.06 14:23:51]
마지막에 그림설명 한눈에 팍 이해가 가네요 ^^

by 와인이 [2009.09.06 13:09:44]
질문이 있는데. 위의 강의에서 " 이것은 이 테이블의 데이터 세그먼트가 사용하는 각 데이터 블록의 20%를 사용 가능한 빈 영역으로 유지하여 각 블록에 있는 행을 갱신하는데 사용한다는 의미입니다. " 여기서 각 블럭이라면

전체 구조가 아닌, 각 각의 블럭에서 20%를 잡는다는 말인가요??

맨 밑에 그림 보니까 아닌거 같아서;; 헷갈리네요

밑에 그림은 전체에서 20%의 블럭을 잡은거 같이 보여서요;

어떤식으로 이해해야 하는즈;;

만약 블록 전체에서 20%를 잡는다면

PCTFREE를 적게잡거나 크게 잡을 때

왜 한 블럭에 들어가는 행이 차이가 나나요??

by 그린윈 [2009.10.29 17:18:40]
위의 그림은 하나의 블럭의 구조를 보여주는 것입니다. 그러므로 PCTFREE를 20%로 잡았을 경우 각 블럭은 20% 공간이 남을때 까지 데이터를 입력 할 수 있습니다. PCTFREE를 5% 로 잡으면 5%의 공간만 남겨 놓고 데이터를 입력 할 수 있는 것입니다. (물론 각 블럭 사이즈는 동일 하죠) 같은 공간의 크기를 가진 블럭이 있다면 PCTFREE 가 20% 까지인 블럭보다 5% 까지인 블럭이 데이터를 더 많이 받을 수 있기 떄문에 행(데이터) 가 더 많이 들어가겠죠..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입