반응형
HWM(High Water Mark)란?
-
HWM(High Water Mark)란 저장공간을 갖는 세그먼트 영역에서 사용한 적이 있는 Block과 사용한 적이 없는 Block 의 경계점을 의미한다.
Block 은 위에서 부터 채워진다. -
데이타파일은 HWM을 가지지 않으며, 세그먼트만이 HWM를 가진다.
특성
-
High Water Mark는 증가하기만 한다.
-
Truncate 명령을 사용하면 Header Block 위치로 돌아오게 된다.(0으로 set)
-
Delete 명령은 HWM의 변화를 주지 않는다.
-
5 block 씩 증가한다. (초기 5 block이 될때까지는 1 block씩 증가한다.)
-
Table의 Full Scan량과 동일하다.
-
USER_TABLES.AVG_SPACE의 기준이 된다.
관련 Data Dictionary
USER_TABLES.BLOCKS | HWM와 같은 값으로 단위는 block 이다. segment에 의해 사용된 적이 있는 block 수 |
---|---|
USER_TABLES.EMPTY_BLOCKS | 할당된 블록 중에서 HWM 위에 미사용으로 남아있는 공간의 블록 수. HWM 위의 block |
USER_TABLES.AVG_SPACE | 한 블록당 평균 FREE SPACE SIZE. 단위는 Byte 이다. Header Block을 제외한 HWM 안에 있는 Block들에 대해서 평균을 구하므로 오차가 있을 가능성이 많다. |
테이블 사이즈 계산 | 테이블 사이즈 = (blocks + empty_blocks + 1) = 사용블록 + 비어있는블록 + segment head block(1) |
---|
HWM 측정방법
-
특정테이블의 HWM를 알기 위해서는 ANALYZE TABLE 명령을 수행하여 통계정보를 수집한다.
ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS;
-
수집한 통계정보를 가지고 HWM를 측정한다.
SELECT blocks, empty_blocks, num_rows
FROM user_tables
WHERE table_name = <tablename>; -
레코드를 삭제하는 것은 HWM의 위치를 아래로 옮기지 않는다.
그러므로, 레코드를 삭제하는 것은 EMPTY_BLOCKS 의 수치를 늘리지 않는다.
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
[출처] Oracle HWM(High Water Mark) |작성자 리원아빠
반응형
'ORACLE > TUNING' 카테고리의 다른 글
DBMS_XPLAN - 2.포맷 설정하기 (0) | 2010.05.24 |
---|---|
DBMS_XPLAN - 1.실행계획 (0) | 2010.05.24 |
AWR - Monitoring & Tuning (0) | 2010.03.23 |
AWR (Automatic Workload Repository) (0) | 2010.03.23 |
Statspack 생성/삭제/Sanpshot생성 (0) | 2010.03.23 |