안녕하세요, BTC 24/365팀입니다.
이번 포스팅에서는 Oracle DB의 논리적 구조에 대해 알아보도록 하겠습니다.
이전 게시글 https://btcd.tistory.com/122?category=927631
1. Oracle DB 논리적 구조
2. HWM
3. Delete, Truncate, Drop
4. Shrink
1. Oracle DB 논리적 구조
- Table Sapce는 여러개의 Segment들의 집합
- Segment는 Data Segment, Index Segment, Temporary Segment, Undo Segment 종류로
나눠지며, 아래의 Segment는 Data Segment에 해당한다.
- Extent는 하나이상의 연속된 데이터 블록들이 모여 구성된다.
- Data Block은 DB에 데이터가 저장되는 가장 작은 단위이다.
2. HWM (High Water Mark)
- HWM이란 고수위라고도 하며, 이것은 테이블의 데이터가 어디까지 들어있다는 것을 가리키는
일종의 포인터이고, 자동적으로 HWM의 뒤는 데이터가 들어있지 않은 공간이라는 것이 확인된다.
- 테이블을 읽는다는 것은 해당 테이블의 처음부터 HWM이 위치한 곳까지 읽는 것을 의미
- Block들이 모여있는 한줄이 Segment에 할당된 영역, 각각의 블록은 Data Block,
5개의 Block이 하나의 Extent
- HWM 이전 블록에만 저장가능
- Full Scan 수행 시, HWM 앞의 모든 데이터 블록 접근
- Data가 적은데 풀 스캔 시간이 오래 걸리면 세그먼트 축소 필요
3. Delete / Truncate / Drop
■ Delete
- 데이터만 삭제 되며 테이블 용량은 줄어들지 않는다.
- 한 행씩 삭제하기 때문에 행이 많으면 System 자원을 많이 소모한다.
- Commit 이전에는 Rollback이 가능하다.
- 롤백정보를 기록하므로 Truncate에 비해서 느리다.
- 전체 또는 일부 데이터만 삭제가 가능하며 삭제 후 행수를 반환한다.
- Delete 후에는 HWM이 줄어들지 않는다.
■ Truncate
- 테이블을 최초 생성된 초기상태로 만든다.
- 용량이 줄어들고 인덱스 등 모두 삭제된다.
- Rollback이 불가능하다.
- 전체 삭제만 가능하며 삭제 후 행수를 반환하지 않는다.
- HWM이 최초 할당된 영역을 남기고 모두 할당해제된다.
■ Drop
- 기존 테이블의 존재를 없앤다.(테이블의 정의 자체를 완전히 없앤다.)
- Rollback이 불가능하다.
- HWM이 모두 할당해제된다.
4. Shrink
- DB를 사용하다보면 DML 작업이 한 테이블에서 많이 일어나게 되면 HWM는 이전에 데이터가
가장 많았던 시점의 HWM을 표시하고 있지만 실제로 사용하는 블록은 HWM까지 미치지 못한다.
- 위 같은 상황으로 테이블의 크기도 불필요하게 커질 뿐 아니라 Full Scan시 데이터 스캔의
범위기준이 HWM이기 때문에 스캔시 불필요한 I/O가 발생된다.
- 위 문제를 해결해주기 위한 방법으로 Shrink 기능이 생겨남.
'Database' 카테고리의 다른 글
이상 현상(Anomaly)이란? (0) | 2022.05.13 |
---|---|
[24/365] LRU 알고리즘이란...? (0) | 2022.05.13 |
E-R 다이어그램 (0) | 2022.05.04 |
[24/365] 논리적 물리적 구조 (0) | 2022.05.02 |
RDB에 대해서 (0) | 2022.04.22 |
댓글