by 구루비 PCTFREE PCTUSED ROW CHAINING ROW MIGRATION [2006.04.10]
사용 가능한 Block 공간 중에서 데이터 행의 UPDATE 에 대비하여 확보해 놓는 블록의 퍼센트 값 입니다.
PCTFREE의 기본값은 10% 입니다.
PCTFREE값에 도달하면 블록은 꽉 찬 것으로 간주하고, 새로운 Row를 추가 할 수 없습니다.
PCTFREE값이 도달된 후 블록내에 남은 공간은 기존의 Row가 Update되어 공간이 추가로 필요할 때 사용됩니다.
PCTFREE와 PCTUSED의 합이 100을 초과하지 않는 범위 내에서 0에서 99까지의 값을 PCTFREE 값으로 사용할 수 있습니다. (PCTFREE+PCTUSERD <= 100)
PCTFREE = 20 : 블록의 20%를 사용 가능한 빈 영역으로 유지하여 각 블록에 있는 행을 갱신하는데 사용한다는 의미입니다
- 기존 테이블 행 갱신에 의한 확장을 위해 적은 공간을 확보 합니다.
- 많은 로우가 한 블록에 입력 가능합니다.
- 수정이 적은 세그먼트에 적합 합니다.
- 블록당 적은 row가 입력됩니다. 즉 같은 row를 입력하기 위해서 많은 블록이 소요 됩니다.
- 행 조각을 자주 체인화할 필요가 없으므로 수정 수행 속도가 증가 합니다.
- 자주 수정되는 세그먼트에 적합 합니다.
데이터블록의 Free Space의 퍼센트가 PCTFREE에 도달한 후, 사용된 공간이 PCTUSED 이하의 값이 되기 전까지 해당 블록에 새로운 Row를 추가 할 수 없습니다. 즉 PCTUSED에 도달하기 전까지는 새로운 행을 INSERT하지 못하고 기존의 행을 UPDATE만을 할 수 있습니다.
PCTUSED = 40 : 데이터 블록의 사용영역이 39%보다 적어지지 않으면 새로운 행을 INSERT할 수 없음을 의미 합니다.
- Row Chaining은 DB_BLOCK_SIZE보다 너무 큰 데이터가 들어왔을 경우 인접한 다른 블록까지 데이터가 쓰여지는 것을 말합니다. 이 데이터 블록은 원래 블록과 연결 되어 집니다.
- Row Chaining은 블록이 하나의 I/O 작업과 동일한 양을 수행하기 위해 두 개의 I/O를 사용해야 하므로 성능상의 부하를 줍니다.
- UPDATE시 로우에 저장된 Data의 양을 증가시켜 더 이상 그 블록에 저장될 수 없을경우 새로운 Block으로 데이터를 완전히 옮기는데 이를 Row Migration 이라고 합니다.
- 즉 Update시 공간이 부족할 때 발생하며, Data 행을 완전히 채울 수 있는 새로운 Block 에 저장 됩니다
- 강좌 URL : http://www.gurubee.net/lecture/1895
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.