[DB] 데이터 저장 구조

양시준·2022년 4월 21일
0

SQLP 메모

목록 보기
1/3

데이터 파일


Oracle 과 SQL Server 모두 데이터 파일에 데이터를 저장하고 관리한다. 논리적인 구조도 약간의 차이가 있지만 거의 동일하다.

블록

  • 대부분 DBMS에서 I/O 가 일어나는 단위
    • 하나의 컬럼을 읽더라도 해당 컬럼이 포함된 블록 전체를 읽는다.
  • 데이터를 읽고 쓸 때 사용하는 논리적인 단위

익스텐트

  • 테이블스페이스로부터 공간을 할당하는 단위
  • 데이터를 저장하다 용량이 부족해지면 테이블스페이스로부터 할당받는다.
    • 익스텐드 크기 만큼의 연속된 블록을 할당받는다.
  • 익스텐트 내 블록은 논리적으로 인접하지만, 익스텐트끼리는 인접하지 않을 수 있다.
    • 두 익스텐트 끼리 다른 데이터 파일에 존재할 수 있다.

SQL Server 특징

SQL Server는 다음과 같은 특징을 가진다.

  • 균일(Uniform) 익스텐트
    • 64KB 이상의 공간을 필요로 하는 테이블, 인덱스에 사용
    • 한 익스텐트의 공간을 단일 오브젝트가 전부 사용한다.
  • 혼합(Mixed) 익스텐트
    • 한 익스텐트의 공간을 여러 오브젝트가 나누어 사용한다.
    • 모든 테이블이 혼합 익스텐트로 시작하지만 데이터 값이 64KB를 넘어가면서 2번째부터 균일 익스텐트 사용

세그먼트

  • SQL Server에서는 세그먼트라는 용어를 사용하지 않는다. (SQL Server에서 힙,인덱스 구조의 오브젝트가 여기에 속함)
  • 테이블, 인덱스, Undo 처럼 저장공간을 필요로 하는 오브젝트다.
  • 한 개 이상의 인스턴스를 사용한다.
  • 테이블을 포함한 여러 오브젝트는 기본적으로 하나의 세그먼트를 가진다. (1:1)
  • 단, 파티션 테이블의 경우 하나의 테이블에 여러 세그먼트를 가진다. (1:M)
  • 한 세그먼트가 여러 데이터 파일에 저장될 수 있다.

테이블스페이스

  • 세그먼트를 담는 컨테이너로, 여러 데이터 파일로 구성된다.
  • 각 세그먼트들은 한 테이블스페이스 내에 속한다.

임시(Temporary) 데이터 파일

대량의 정렬, 해시 작업을 수행하다가 메모리 공간이 부족해지면 중간 결과 집합을 저장하는 용도다.
임시로 저장했다가 자동으로 삭제된다.
백업이 불필요하기 때문에 Redo 정보도 생성하지 않는다.

로그 파일

DB 버퍼 캐시에 가해지는 모든 변경사항을 기록하는 파일을 Redo 로그 라고 부른다.
변경된 메모리 버퍼 블록을 기록하는 작업는 느리다. 따라서 우선 로그 파일에 기록하고 나중에 적절한 시점에 배치 방식으로 일괄 처리한다.

Online Redo 로그

  • 캐시에 저장된 변경사항이 데이터 파일에 저장되지 않은 시점에 비정상적인 종료가 발생하면 이 이전의 작업내용이 모두 날아간다.
  • 이러한 데이터의 유실에 대비하기 위해 사용한다.
  • 최소 2개 이상의 파일르 구성되며, 작성 중인 파일이 다 차면 다음 파일로 넘어가는 로그 스위칭이 발생한다.
  • 라운드 로빈 방식을 사용한다.

트랜잭션 로그

  • SQL Server 에서 Online Redo 로그 역할을 한다.

Archived(=Offine) Redo 로그

  • Oracle에서 Online Redo 로그가 재사용 되기 이전에 다른 위치로 백업해 둔 파일이다.
  • 물리적인 저장 매체에 문제가 생겼을 때 복구에 사용된다.
  • SQL Server에서는 이에 대응되는 기능이 없다.
profile
야크 털 깎기와 러버덕 디버깅을 좋아하는 개발자

0개의 댓글