티스토리 뷰

DataBase

오라클의 데이터 구조

메성 2019. 12. 9. 10:28
반응형

가변 길이 데이터를 관리하기 위한 프로그램

[가변 길이 데이터는 관리가 힘듬]
1. 데이터를 변경할 때 문제가 있을 수 있음.
2. 동시에 처리가 불가능
    - 순서대로만 가능
3. 데이터 관리나 I/O가 힘듬
    - 양이 많아지면 힘듬
4. 사용하지 않는 공간의 관리가 힘듬
    - 데이터 없는 공간을 관리해야하나 양이 많아지면 힘듬

[해결]
1. 관리 및 I/O의 효율을 고려해 공간을 어느 정도의 크기로 뭉쳐서 할당
    - 각 테이블의 집합으로 뭉쳐서 관리
2. 데이터 변경에 필요한 공간을 확보해둠
3. 비어 있는 공간을 관리
    - 어느 정도의 크기마다 데이터 변경용 공간을 준비해둠

오라클의 데이터 구조

- 오라클의 데이터 구조는 물리 구조 및 논리 구조가 있음.
- 물리 구조
    - 데이터 파일 등의 OS에서 보이는 구조
- 논리 구조
    - OS에서는 식별할 수 없는 오라클 내부의 구조
    - 테이블 스페이스(창고), 세그먼트(물건 이름), 익스텐트(창고의 선반), 오라클 블록(정리함)

[익스텐트]
- 익스텐트는 연속된 블록의 집합
- 익스텐트의 도움으로 각 블록의 위치가 아니라 각 익스텐트의 첫 위치와 블록이 개수만으로 데이터를 관리할 수 있으며, 관리 정보도 줄일 수 있음.
- 익스텐트의 예
    - 데이터가 블록보다 길어질 시 블록을 여러개 걸쳐서 데이터 입력(예외동작)
    - 이로 인해서, 익스텐트로 블록을 연결해 정리

각 데이터 구조

[세그먼트]
- 많은 데이터를 보관하기 위한 구조(익스텐트 집합)
- 사용자용 세그먼트인 테이블이나 인덱스 이외에도 오라클이 자동적으로 생성하는 세그먼트도 있음
- 데이터를 정렬하기 위한 세그먼트나 언두라고 불리는 과거 데이터를 보관하는 세그먼트도 있음

[테이블 스페이스]
- 테이블 스페이스라고 부르긴 하지만, 세그먼트를 분류해서 보관하기 위한 상자라고 생각
- 한 개 애상의 데이터 파일로 구성됨
- 테이블 스페이스의 집합(물리적으로 데이터 파일의 집합)과 리두 로그 파일, 컨트롤 파일이 모이면 하나의 데이터베이스가 됨.

[블록 안의 공간]
- 오라클은 블록 안에 데이터를 입력할 때 어느 정도의 공간을 남겨둠.
- 빈 블록 관리
    - 세그먼트 안에 공간이 모자란 상황이 오면 세그먼트에 새로운 익스텐트를 추가하고 빈 블록 늘림.
    - 자동 세그먼트 영역 관리(ASSM)를 사용하고 있을 때는 오라클이 자동으로 판단

[ROWID]
- 데이터 행의 주소를 ROWID라고 부름
- ROWID는 데이터 파일의 번호나 데이터 파일 안의 블록 번호, 블록 안에 행 번호와 같은 정보로 구성됨
- 행 데이터는 블록에 보관되어 있음을 알 수 있음.

실제 흐름을 따라 각 동작을 확인

[공간 할당하기 및 비어 있는 공간의 관리]
1. 데이터베이스의 생성
    - 테이블 스페이스가 생성
2. 사용자용 테이블 스페이스의 생성
    - 사용자용 테이블 스페이스를 생성하는 것은 데이터베이스를 생성할 때 같이 해도 상관 없음.
3. 테이블을 테이블 스페이스에 생성
    - 이 시점에 몇가지 익스텐트가 생성됨.
    - 익스텐트 생성 후 데이터 입력이 수행되며, 익스텐트가 비어있는 블록에 데이터를 입력
    - PCTFREE라는 입계치에 도달하면 해당 블록에 입력하는 것을 멈추고 '이 블록에는 공간이 없어'라고 인식
    - 데이터의 입력이 계속되어 익스테늩가 가득차게 되면 테이블 스페이스가 가지고 있는 공간에서 새로운 익스텐트를 테이블에 할당하고 새로운 데이터를 입력할 수 있게 함
    - 테이블이나 인덱스가 DROP되면 익스테늩 안의 데이터는 불필요하므로 테이블 스페이스의 공간으로 돌아감

프로세스에서 본 데이터 구조

- 검색은 해당 테이블의 익스텐트를 조사하고 버퍼 캐시에 존재하지 않는 블록을 처음부터 읽어옴
- 변경은 인덱스를 사용해 한 건만을 대상으로 하는 변경
    - 우선 인덱스에 접근하고 인덱스의 관리 정보를 토대로 인덱스의 루트 블록을 찾아감, 캐시에 없다면 블록을 읽어옴

정리

- 테이블 스페이스는 세그먼트를 집어넣기 위한 용기로서 하나 이상의 데이터 파일로 구성
- 일반적으로 테이블이나 인덱스는 세그먼트
- 세그먼트는 익스텐트로 구성되며, 익스텐트는 연속한 블록으로 구성되어 있음.
- 세그먼트는 테이블 스페이스 여러 개에 걸쳐서 존재할 수 없음.
- 익스텐트는 데이터 파일 여러개에 걸쳐서 존재할 수 없음
- 일반적으로 테이블이나 인덱스는 테이블 스페이스가 가지고 있는 공간엣 ㅓ새로운 익스텐트를 할당받음으로써 크기가 커져 나감
- 블록 안이ㅡ 데이터 변경용 공간은 PCTFREE라느 파라미터로 제어
- 행은 블록에 보관
반응형

'DataBase' 카테고리의 다른 글

리두와 언두의 동작  (0) 2019.12.09
오라클의 대기와 락  (0) 2019.12.09
커넥션과 서버 프로세스의 생성  (0) 2019.12.06
오라클의 기동과 정지  (0) 2019.12.06
SQL문 분석과 공유 풀  (0) 2019.12.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함