본문 바로가기

카테고리 없음

ORACLE pctused parameter ver1.0

출처 : OTN http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/schema.htm#9079
=============================================================================================

PCTFREE에 의해 BLOCK이 다 사용되었다고 판단되면 ORACLE은 일정 퍼센트 이하로 사용량이 떨어지기까지
해당 블록에 값을 저장하지 않는다.(NO INSERTION)
위에서의 일정퍼센트란 바로 PCTUSED를 의미한다.
Text description of admin019.gif follows
PCTUSED가 좌측과 같이 40이라 하면
ORACLE은 블록의 사용량이 40% 미만이 되기까지 이 블록을 INSERT하는데 사용하지 않는다.

PCTUSED 의 기본 VALUE는 40%이다.

PCTUSED 값은 0 ~ 99 까지 할당가능하다.

PCTUSED와 PCTFREE의 합은 100을 초과할 수 없다.

100을 초과한다는 상황을 생각해보자.
PCTUSED가 70    PCTUSED가 40
이라 하면 40%는 UPDATE를 위해 남겨둔다란 의미를 가진다. 계속해서
<< from OTN >>

INSERT가 일어난다면 60%까지 사용하고 다른 블록을 사용할 것이다. 만약 해당 블록의 ROW가 삭제되어
재입력이 가능한 상태가 되었다고 생각했을때 PCTUSED의 값을 보면 이미 INSERT가 가능한 상태였다.

더이상 INSERT를 하지 못한다고 판단했지만 (PCTFREE에 의해) PCTUSED를 보았을때 INSERT가 가능했었던
상황인 것이다. (말이 점점 이상해지네 ;;)

PCTUSED가 작다면

UPDATE와 DELETE간의 작업으로 FREE LIST의 BLOCK으로 찾아가는 비용을 줄일 수 있다.
다시말하자면 PCTUSED가 작다는 것은 INSERT가 다시 가능해진 시점에 블록의 상당부분이 비어있다는 것을
의미하기 때문에 새롭게 많은 입력을 받을 수 있다. (FREE BLOCK 찾을 필요가 없다)

하지만 이와 동시에 INSERT가 가능해지는 시점이 블록의 상당량이 장기간 비어있지 않으면 안된다는 것을 의미하기에 공간의 낭비라는 단점이 있다.

PCTUSED가 크다면

한 블록에 많은 INSERT를 할 수 있기 때문에 블록 활용도가 높아지나
INSERT나 UPDATE로 인해 많은 비용이 발생 할 수 있다.