물리적 저장장치의 구성
- 물리적 저장장치는 데이터 접근 속도, 용량을 기준으로 다양한 장치로 구성
특징
- 휘발성
- 캐시 : 고비용 저장장치, 빠른 접근 속도 보장
- 메인메모리 : 실제 프로그램과 데이터 적재 공간
- 비휘발성
- 플래쉬메모리 : 메인메모리와 유사
- 자기디스크 : 데이터베이스 전체를 안정적으로 저장
- 광학 디스크 드라이브 : CD, DVD, Blue-ray 등
- 테이프장치 : 용량이크고 저렴, 순차접근방식 -> 매우 느림
파일
데이터베이스의 구성
구성요소
- 파일
- 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 논리적 구조
- 블럭
- 파일을 고정적인 길이로 분항하여 생기는 균등한 크기로 나눈 데이터묶음
- 일반적으로 메모리와 디스크간 데이터 존송 단위로 결정
- 레코드
- 블럭을 구성하는 요소
- 더이상 분리될 수 없는 최소 데이터 저장 단위
고정길이 레코드
- 고정적인 바이트 수를 갖는 레코드를 저장하는 기법
잔여 고정길이 레코드 할당
-> 두블럭 읽어야할때엔 느림
고정길이 레코드 할당의 문제
- 레코드 삭제시
- 해당 레코드가 저장된 위치에 빈공간이 생성
- 장시간 레코드의 삽입 및 삭제 발생시, 저장공간에 많은 낭비가 발생
- 레코드 삭제시 대처 방안
- 마지막 레코드로 공백 대체
-> 레코드의 순서가 입력된 순서와 달라짐(검색의 효율 떨어짐)
- 삭제 레코드 이후의 레코드를 이동
-> 삭제시 아래의 모든 항목 이동 필요해 오버헤드 큼
- 가용 리스트 관리
-> 공백레코드 포인터 삽입하고, 빈곳 그냥 둠(새로운 데이터가 있으면 그곳부터 채움)
가변길이 레코드
- 블럭에 저장되는 레코드의 길이가 서로 다른 레코드를 할당하는 방법
- 가변길이 레코드가 사용되는 상황
- 한블럭내에 저장되는 레코드 유형이 둘이상
- 길이가 고정되니 않은 컬럼의 개수가 하나이상
- 레코드가 멀티셋(레코드의 컬럼값이 여러개인 컬럼)을 허용한 컬럼을 가질때
미리 가변길이의 정보를 가지고 있음
슬롯페이지 구조
파일 구조화 방법
- 파일 구조화
- 파일 수준에서 레코드를 관리(순서 등)하는 기법
방법과 종류
- 힙 파일 구조 : 저장 순서 고려없이 파일 내 임의의 위치에 배치
-> 저장속도빠름, 사용효율(검색속도) 떨어짐
- 순차 파일구조 : 레코드들이 탐색키 기준으로 정렬되어 저장
-> 저장속도 느림, 검색속도 빠름
- 레코드가 검색키 순서대로 정렬
- 레코드가 파일에 삽입되는 시점에서 키 값이 부여
- 장점
- 검색키에 대한 정렬 연산이 불필요, 키 값들의 순서대로 레코드를 판독하는 연산에 효율적
- 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블럭접근이 불필요
- 이진 탐색을 사용하면 더 빠르게 레코드를 검색
- 단점
- 레코드 삽입, 삭제에 많은 비용 소요
- 해시 파일구조 : 해시험하를 사용하여 불럭 주소를 계산
-> 성능차 심함
오버플로우 블럭
- 순차파일 구조에서 레코드의 정렬된 상태 유지를 위해 삽입된 신규 블럭
저장장치 관리
저장장치 접근
- 파일은 논리적 관점에서의 저장 객체
- 실제 저장됭떄에는 여러 개의 물리적 단위인 블럭으로 저장
- 블럭은 메모리와 디스크 간 데이터의 전송단위
- 일반적으로 2KB~ 32KB 사용
- 블럭 전송을 최소화 할수록 압출력 소요 시간이 단축
- 사용중인 블럭을 지속적으로 메모리에 적재
- 한정적 공간으로 인하여 필요에따라 특정 블럭 할당을 해지
- 메모리 내부에 버퍼라는 공간에 블럭을 저장하고, 이를 관리하기위한 버퍼 관리자를 사용
버퍼관리자
- DBMS 상의 소프트위에는 필요한 블럭이 있을때 버퍼 관리자에세 해당 블럭을 요청
- 요청된 블럭이 버퍼에 있다면, 버퍼 관리자는 블락이 위치한 메모리 주소를 프로그램에게 전달
- 요청된 블릭이 없는 경우, 버퍼관리자는 버퍼내의 새로운 공간을 할당하고 해당 블럭을 적재
- 더이상 적재할 공간이 없다면, 버퍼에 있는 기존 블럭을 선택하여 할당을 해지하고 해당 블럭을 적재
버퍼 교체 전략
버퍼 관리자의 기능
- 버퍼 교체 전략
- 가용 공간을 확보하기 위해 기존에 적재된 블럭의 할당을 특정 기준에 의하여 해지
- 미래에 가장 적게 사용될 블럭을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략
- 버퍼 교체 전략 기봅
- LRU(Least Recently used) : 최근에 가장 적게 참조된 블럭을 교체
- MFU(Most Frequently Used) : 특정 기간동안 가장 여러번 사용된 블럭을 선택하여 블럭을 교체
- 고정 블럭
- 장애로 인하여 메모리의 데이터가 손실되어 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
- 디스크에 블럭이 교체되는 것을 제한
- 블럭 강제출력
- 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 함
- 버퍼 공간이 필요 없어도 거제로 디스크에 기록
고정블럭과 블럭 강제 출력