본문 바로가기

전공/데이터베이스

[데이터베이스] 저장 장치 관리 및 인덱싱: 데이터 저장 장치 구조

 

데이터 사전 저장소(Data Dictionary Storage)


 

릴레이션 스키마와 같은 데이터에 대한 데이터메타데이터(metadata)라고 하고, 이는 데이터 사전(data dictionary)이라고 불리는 구조에 저장된다.

 

메타데이터에는 릴레이션에 대한 정보, 사용자와 계정에 대한 정보, 릴레이션 및 속성에 대한 통계 및 설명 데이터, 물리적 파일 구성 정보, 릴레이션의 인덱스에 대한 정보와 같은 정보들이 있다.

 

 

 

 

 

 

 

 

 

 

데이터베이스 버퍼(Database Buffer)


 

데이터베이스 파일은 블록(block)이라고 불리는 고정된 길이의 저장 단위로 저장되고, 이 블록은 디스크 할당(storage allocation)과 데이터 전송(data transfer)의 기본 단위이다.

 

 

 

 

- (메인 메모리) 블록의 종류

 

1. pinned block: 다른 프로세서가 사용 중이어서 디스크에 쓸 수 없는 블록이다.

2. dirty block: 하나 이상은 update를 포함하고 있는 블록이다.

3. read only block: 읽기만 가능한 블록이다.

 

 

 

 

데이터베이스 시스템은 디스크와 메모리 사이의 블록 전송 수를 최소화하는 것이 목적이다.

 

디스크 접근을 줄이는 한 가지 방법은 메인 메모리에 최대한 많은 블록을 유지하는 것이다.

 

하지만, 메인 메모리에 모든 블록을 유지하는 것은 불가능하므로 메인 메모리에서 블록을 저장하기 위해 이용할 수 있는 공간 할당을 관리해야 한다.

 

이때, 디스크 블록의 복사본을 저장하기 위해 이용할 수 있는 메인 메모리의 일부 공간버퍼(buffer)라고 하고, 이 버퍼 공간의 할당을 책임지고 있는 서브시스템버퍼 관리자(buffer manager)라고 한다.

 

 

 

 

- 버퍼 관리자

 

프로그램은 디스크로부터 블록을 가져와야 할 때 버퍼 관리자를 호출한다.

 

만약 필요한 블록이 버퍼에 이미 있다면, 버퍼 관리자는 메인 메모리의 블록 주소를 요청한 프로세스에 전달한다.

 

블록이 버퍼에 있지 않다면, 버퍼 관리자는

 

1. 먼저 버퍼에 블록을 저장하기 위한 공간을 할당한다.

이때, 버퍼가 가득 차있으면 read only block을 read only block이 없으면 dirty block을 디스크로 내보내고, 

보내진 블록은 디스크에 쓰인 가장 최근의 것과 비교해서 변경된 것이 있다면 update한다.

 

2. 그 후 요청된 블록을 디스크에서 버퍼로 읽어와서 메인 메모리의 블록 주소를 요청한 프로세스에 전달한다. 

 

 

 

 

- 버퍼 교체 전략

 

버퍼에 블록을 읽어올 남아있는 공간이 없을 때, 버퍼에서 블록 하나를 제거해야 한다. 

 

 

1. LRU(least recently used) 방법

 

최근에 가장 적게 참조된 블록을 교체하는 방법이다.

 

운영체제는 앞으로 참조될 블록을 예상하기 위해서 과거에 참조된 블록의 패턴을 이용한다.

이때, 최근에 참조된 블록은 다시 참조될 가능성이 높다고 가정하기 때문에 LRU 방법을 사용한다.

 

LRU는 반복되는 데이터 스캔을 포함하는 특정 접근 패턴에 대해서는 좋지 않은 전략이다.

 

 

2. MRU(most recently used) 방법

 

최근에 가장 많이 참조된 블록을 교체하는데, 만약 해당 블록이 사용 중일 때는 교체하지 않는다.

 

MRU 방법이 작동하기 위해서, 시스템은 현재 처리하고 있는 블록을 해야 한다.

 

 

3. 그 외의 방법

 

버퍼 관리자는 어떤 요청이 특정 릴레이션을 참조할 것이라는 확률에 대한 통계 정보도 사용할 수 있다.

 

예시) 데이터 사전은 데이터베이스에서 가장 빈번하게 접근되는 부분 중 하나이다. 그러므로 다른 요인이 있지 않은 이상 버퍼에서 제거하지 않는다.