-
[데이터베이스] Segment Header, FreeList, BitMap, HighWaterMark(HWM)공부/데이터베이스 2022. 12. 21. 21:15
■ Segment Header
명칭 설명 Segment Header SEGMENT ID, BITMAP or FREELIST, HWM이 존재한다.
■ FreeList
0 0 ~ 39% 1 40% 이상 - FreeList는 0~39%이면 0
- 40% 이상이면 1로 표기한다.
- FreeList가 1일 때 40%만큼의 공간만 차지한다고 하더라도 추가할 수 없다.
■ BitMap
00 0 ~ 25% 01 26 ~ 50% 10 51 ~ 75% 11 76 ~ 100% - 위와 같이 정의했다고 가정해보자
DATABASE BLOCK 1K 00 01 10 11 1 2 3 4 - 1번 블록은 0~25%, 2번 블록은 26~50%, 3번 블록은 51~75%, 4번 블록은 76~100%가 채워져있다는 소리이다.
- 만약 1번 블록에 이미 100만큼의 값이 차 있고 500만큼 값을 추가로 넣으면 총 600의 값이 채워진다.
- 그렇다면 비트맵은 아래와 같이 바뀐다.
DATABASE BLOCK 1K 10 01 10 11 1 2 3 4 - 여기서 주의할 점은 현재 1번 블록에 600의 값이 들어있지만 75%로 판단하여 400의 값을 넣을 수 없고 25%로 들어갈 수 있는 최대값인 250의 값을 넣을 수 있다.
■ HighWaterMark(HWM)
- BitMap의 가장 마지막에 HWM를 표시한다.
- 값을 추가할시 HWM를 기준으로 이전 블록들을 찾아본다.
- 만약 750을 추가한다고 가정해보자.
- HWM의 이전 블록을 뒤져 1번 블록에 값을 채우고 11로 바꾸는 것을 알 수 있다.
- 1번 블록을 마지막으로 작업했다고해서 HWM의 위치는 바뀌지않고 값이 다차서 다음 블록을 만들어야할 때만 HWM이 바뀐다.
- HWM은 DELETE로 값을 비어도 바뀌지않고 마지막 위치에 유지된다.
- Drop, Truncate는 HWM이 사라진다.
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 동기화 확인 방법 (0) 2022.12.22 [데이터베이스] Oracle 서버 기동 단계(Shoutdown, Nomount, Mount, Open) (0) 2022.12.21 [데이터베이스] Parsing(구문 분석) (0) 2022.12.21 [데이터베이스] CHAR, VARCHAR2 (0) 2022.12.21 [데이터베이스] Oracle 저장 구조 Extent, Segment (0) 2022.12.21