DataBase/그림으로 공부하는 오라클 구조

7장 오라클의 데이터 구조

우드의개발개발 2023. 10. 9. 17:41

데이터 구조가 필요한 이유

대량의 가변 데이터를 빠르게 CRUD 하기 위함이다.

 

 

물리 구조

O/S에서 보이는 구조

 

논리 구조

O/S에서 보이지 않는 구조

 

 

데이터 구조의 종류

    • 책에 비유할 수 있다.
    • ROWID는 행주소이다.
    • ROWID는 (파일번호 + 블록번호 + 행번호)로 구성된다.

 

  • 블록
    • 책을 담는 정리함에 비유할 수 있다.
    • PCTFREE는 메모리 여유공간을 의미하는 환경변수이다. 값이 작으면 여유공간이 없다는 의미이다.
    • PCTUSED는 메모리가 얼만큼 사용됐는지를 의미하는 환경변수이다. 값이 작으면 여유공간이 있다는 의미이다.

 

  • 익스텐트
    • 책을 담는 정리함을 보관하는 선반에 비유할 수 있다.
    • 연속된 블록의 집합이다.
    • 익스텐트의 첫위치와 블록의 개수로 데이터를 관리한다.
    • ASSM 이용시 PCTUSED를 신경 쓸 필요가 없다.

 

  • 세그먼트
    • 테이블 또는 인덱스와 대응한다
    • 익스텐트의 집합이다.
    • 여러 종류의 세그먼트가 있다.
      • 언두 세그먼트
      • 유저 세그먼트
      • 정렬 세그먼트
      • 시스템 세그먼트

 

  • 테이블 스페이스
    • 한개 이상의 데이터파일로 구성된다.
    • 한개 이상의 세그먼트로 구성된다.

 

  • 데이터베이스
    • 테이블 스페이스 + 리두로그 파일 + 컨트롤 파일로 구성된다.

 

풀스캔과 인덱스

풀스캔

테이블(세그먼트)의 익스텐트를 조사한다. 버퍼 캐시에 블록이 있으면 읽고 없으면 가지고 온다. 예를 들어 테이블을 구성하고 있는 익스텐트가 6개의 블록으로 구성되어 있고 1번 블록이 캐싱되어 있다면 2번부터 6번 블록을 가지고 온다.

 

인덱스

데이터 하나를 찾는 랜덤 액세스 같은 경우 // 인덱스 조사 ---> 루트블록 확인 ---> 다음블록 확인을 통해 필요 데이터의 ROWID를 가지고 온다.

 

요약

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

 

TIP

익스텐트가 가득차면 세그먼트에 새로운 익스텐트를 할당합니다. 세그먼트에 할당 할 공간이 없으면 데이터 파일을 추가합니다.