문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
dbms:oracle:concept:highwatermark [2008/02/14 00:49] starlits 새로 만듬 |
dbms:oracle:concept:highwatermark [2008/02/14 02:16] (현재) starlits |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Oracle HWM(High Water Mark) ====== | ====== Oracle HWM(High Water Mark) ====== | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== HWM(High Water Mark)란? ===== | ===== HWM(High Water Mark)란? ===== | ||
- | - HWM(High Water Mark)란 저장공간을 갖는 세그먼트 영역에서 사용한 적이 있는 Block과 사용한 적이 없는 Block 의 경계점을 의미한다. | + | - HWM(High Water Mark)란 저장공간을 갖는 세그먼트 영역에서 사용한 적이 있는 Block과 사용한 적이 없는 Block 의 경계점을 의미한다. |
+ | - 데이타파일은 HWM을 가지지 않으며, 세그먼트만이 HWM를 가진다. | ||
+ | |||
+ | {{dbms: | ||
===== 특성 ===== | ===== 특성 ===== | ||
줄 11: | 줄 18: | ||
- Table의 Full Scan량과 동일하다. | - Table의 Full Scan량과 동일하다. | ||
- **USER_TABLES.AVG_SPACE**의 기준이 된다. | - **USER_TABLES.AVG_SPACE**의 기준이 된다. | ||
+ | |||
+ | |||
+ | |||
===== 관련 Data Dictionary ===== | ===== 관련 Data Dictionary ===== | ||
- | ^ USER_TABLES.BLOCKS | HWM와 같은 값으로 단위는 block 이다. | | + | ^ USER_TABLES.BLOCKS | HWM와 같은 값으로 단위는 block 이다. |
- | ^ USER_TABLES.EMPTY_BLOCKS | 할당된 블록 중에서 HWM 위에 미사용으로 남아있는 공간의 블록 수. | | + | ^ USER_TABLES.EMPTY_BLOCKS | 할당된 블록 중에서 HWM 위에 미사용으로 남아있는 공간의 블록 수. \\ HWM 위의 block | |
^ USER_TABLES.AVG_SPACE | 한 블록당 평균 FREE SPACE SIZE. \\ 단위는 Byte 이다. \\ Header Block을 제외한 HWM 안에 있는 Block들에 대해서 평균을 구하므로 오차가 있을 가능성이 많다. | | ^ USER_TABLES.AVG_SPACE | 한 블록당 평균 FREE SPACE SIZE. \\ 단위는 Byte 이다. \\ Header Block을 제외한 HWM 안에 있는 Block들에 대해서 평균을 구하므로 오차가 있을 가능성이 많다. | | ||
- | ^ 테이블 사이즈 계산 | 테이블 사이즈 = (blocks + empty_block | + | ^ 테이블 사이즈 계산 | 테이블 사이즈 = (blocks + empty_blocks |
- | ===== TUNING | + | ===== HWM 측정방법 |
+ | - 특정테이블의 HWM를 알기 위해서는 **ANALYZE TABLE** 명령을 수행하여 통계정보를 수집한다. \\ <code sql> ANALYZE TABLE < | ||
+ | - 수집한 통계정보를 가지고 HWM를 측정한다. <code sql> | ||
+ | SELECT blocks, empty_blocks, | ||
+ | FROM | ||
+ | WHERE table_name = < | ||
+ | </ | ||
+ | - 레코드를 삭제하는 것은 HWM의 위치를 아래로 옮기지 않는다. \\ 그러므로, | ||
+ | ===== TUNING ===== | ||
+ | - 계산된 테이블사이즈가 세그먼트의 크기(USER_SEGMENTS.BLOCKS)와 다르면 Analyze를 다시 해주어야 한다. | ||
+ | - EMPTY_BLOCKS가 BLOCKS에 비해 너무 크면, INITIAL_EXTENT나 NEXT_EXTENT를 줄여야 한다. | ||
+ | - 입력된 데이터 건수에 비해 HWM가 너무 높다면 segment를 재생성을 고려해야 한다. \\ 이유는 실제 데이터 건수는 작은데 비해 Full Scan시에 HWM까지 검색해 Disk I/O가 많아져 부하가 증가하게 된다. | ||
+ | - USER_TABLES.AVG_SPACE가 너무 크면 테이블을 재생성해야 한다. \\ PCT_USED와 PCT_FREE 의 중간 이상 < | ||
+ | DB_BLOCK_SIZE * (100 - PCT_USED + PCT_FREE) / 200 | ||
+ | </ | ||