Reference
🙇🏻♂️ 스스로 다시 보려고 기록하는 내용입니다
물리적 저장장치의 구성
- 물리적 저장장치는 데이터 접근 속도, 용량을 기준으로 다양한 장치로 구성

특징
- 휘발성
- 캐시: 고비용 저장장치, 빠른 접근 속도 보장
- 메인 메모리: 실제 프로그램과 데이터 적재 공간
- 비휘발성
- 플래쉬메모리: 메인메모리와 유사
- 자기디스크: 데이터베이스 전체를 안정적으로 저장
- 광학 디스크 드라이브, CD, DVD, Blue-ray 등
- 테이프장치: 용량이 크고 저렴, 하지만 순차접근방식 -> 접근 속도가 매우 느림
파일
데이터베이스의 구성

- 파일
- 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 논리적 구조
- 블럭
- 파일을 고정적인 길이로 분향하여 생기는 균등한 크기로 나눈 데이터 묶음
- 일반적으로 메모리와 디스크간 데이터 전송 단위로 결정
- 레코드
- 블럭을 구성하는 요소
- 더이상 분리될 수 없는 최소 데이터 저장 단위
고정길이 레코드
고정길이 레코드 할당의 문제
- 레코드 삭제시
- 해당 레코드가 저장된 위치에 빈공간이 생성
- 장시간 레코드의 삽입 및 삭제 발생시, 저장공간에 많은 낭비가 발생
- 레코드 삭제시 대처 방안
- 마지막 레코드로 공백 대체
- 레코드의 순서가 입력된 순서와 달라져서 검색의 효율이 떨어짐
- 삭제 레코드 이후의 레코드를 이동
- 삭제시 아래의 모든 항목 이동 필요해 오버헤드 커짐
- 가용 리스트 관리
- 공백레코드 포인터 삽입하고, 빈곳 그냥 둠(새로운 데이터가 있으면 그곳부터 채움)
가변길이 레코드
- 블럭에 저장되는 레코드의 길이가 서로 다른 레코드를 할당하는 방법
- 가변길이 레코드가 사용되는 상황
- 한 블럭 내에 저장되는 레코드 유형이 둘 이상
- 길이가 고정되지 않은 컬럼의 개수가 하나 이상
- 레코드가 멀티셋 (레코드의 컬럼값이 여러개인 컬럼)을 허용한 컬럼을 가질 때

미리 가변길이의 정보를 가지고 있음
- 슬롯페이지 구조

파일 구조화 방법
- 파일 구조화
- 파일 수준에서 레코드를 관리(순서 등) 하는 기법

- 방법과 종류
- 힙 파일 구조: 저장 순서 고려없이 파일 내 임의의 위치에 배치
- 저장 속도 빠름, 사용 효율(검색속도) 떨어짐
- 순차 파일 구조: 레코드들이 탐색키 기준으로 정렬되어 저장
- 저장 속도 느림, 검색속도 빠름

-
레코드가 검색키 순서대로 정렬
-
레코드가 파일에 삽입되는 시점에서 키 값 부여
-
장점
-
검색키에 대한 정렬 연산이 불필요, 키 값들의 순서대로 레코드를 판독하는 연산에 효율적
- 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블럭 접근이 불필요
- 이진 탐색을 사용하면 더 빠르게 레코드를 검색
-
단점
- 레코드 삽입, 삭제에 많은 비용 소요
-
해시 파일 구조: 해시 함수를 사용하여 블럭 주소를 계산
- 성능차 심함

-
오버플로우 블럭
- 순차파일 구조에서 레코드의 정렬된 상태 유지를 위해 삽입된 신규 블럭

저장장치 관리
저장장치 접근
- 파일은 논리적 관점에서의 저장 객체
- 실제 저장될 때에는 여러 개의 물리적 단위인 블럭으로 저장
- 블럭은 메모리와 디스크 간 데이터의 전송단위
- 일반적으로 2KB ~ 32KB 사용
- 블럭 전송을 최소화 할수록 압출력 소요 시간이 단축
- 사용중인 블럭을 지속적으로 메모리에 적재
- 한정적 공간으로 인하여 필요에 따라 특정 블럭 할당을 해지
- 메모리 내부에 버퍼라는 공간에 블럭을 저장하고, 이를 관리하기 위한 버퍼 관리자를 사용

버퍼 관리자
- DBMS 상의 소프트웨어는 필요한 블럭이 있을 때 버퍼 관리자에게 해당 블럭을 요청
- 요청된 블럭이 버퍼에 있다면, 버퍼 관리자는 블럭이 위치한 메모리 주소를 프로그램에게 전달
- 요청된 블럭이 없는 경우, 버퍼관리자는 버퍼내의 새로운 공간을 할당하고 해당 블럭을 적재
- 더 이상 적재할 공간이 없다면, 버퍼에 있는 기존 블럭을 선택하여 할당을 해지하고 해당 블럭을 적재
버퍼 교체 전략

버퍼 관리자의 기능
- 버퍼 교체 전략
- 가용 공간을 확보하기 위해 기존에 적재된 블럭의 할당을 특정 기준에 의하여 해지
- 미래에 가장 적게 사용될 블럭을 선택하여 디스크로 내보내는 것이 이상적인 버퍼 교체 전략
- 버퍼 교체 전략 기본
- LRU(Least Recently Used): 최근에 가장 적제 참조된 블럭을 교체
- MFU(Most Frequently Used): 특정 기간동안 가장 여러번 사용된 블럭을 선택하여 블럭을 교체
- 고정 블럭
- 장애로 인하여 메모리의 데이터가 손실되고 작업이 중단될 경우, 중단된 작업의 결과물이 디스크에 기록되는 것을 방지
- 디스크에 블럭이 교체되는 것을 제한
- 블럭 강제 출력
- 시스템 로그와 같이 중요한 데이터는 디스크에 영구적으로 기록되어야 함
- 버퍼 공간이 필요 없어도 거제로 디스크에 기록
고정 블럭과 블럭 강제 출력
