[DB] Disk Space Manager
저장 장치
컴퓨터에는 크게 중앙처리장치(CPU), 주기억장치(RAM, ROM 등), 보조기억장치(HDD, SSD) 등이 있다.
On-Board Cache는 L3 캐시, On-chip Cache는 L1, L2 캐시에 사용된다. RAM(흔히 메인 메모리)이 주 작업공간이 될 것이다. 현대엔 SSD(Flash)가 주 저장장치로 사용되는데, 성능 좋은 SSD는 캐시로 사용되기도 한다.
Disks
많은 DB가 아직도 자기 디스크(Magnetic Disk)를 사용한다. 디스크의 데이터를 읽고 쓰기 위해선 read / write 시스템콜을 사용한다. 아주 느리기 때문에, 이런 디스크 I/O를 줄이는 것이 DBMS의 주 목표이다. I/O는 “페이지(=블럭)” 단위로 실행된다 (최근엔 64KB~128KB).
read
: 디스크 → RAM 으로 데이터 페이지를 읽어온다.write
: RAM → 디스크 로 데이터 페이지를 저장한다.
Disk Space Management
- 파일의 디스크에서의 physical organization 을 관리한다.
- 메모리의 page를 디스크의 바이트 주소에 맵핑
- 디스크의 page를 메모리에 로드
- page를 다시 디스크에 write
- 상위 레이어가 파일 레이어에게 할 수 있는 request는:
- 특정 page# 에 해당하는 부분을 디스크에서 읽어와라/써라
- 새로운 page를 할당/dealloc해라
- 디스크를 읽는 방법:
- 저장 장치에 바로 접근하는 방법
- 빠르지만, 디바이스를 잘 알아야 하고 디바이스가 바뀌면 사용하지 못함
- 파일 시스템(FS)을 사용하는 방법
- Allocate single large “contiguous” file on a empty disk.
- 저장 장치에 바로 접근하는 방법
Overall File Representations
대략적으로, 테이블 및 레코드는 실제 디스크에 다음과 같이 저장된다. 레코드의 모음을 페이지라 하고, 페이지의 모음을 파일이라 하고, 파일의 모음을 데이터베이스라 하는 것이다. DB(files(pages(records)))
💡 다시 한번 강조하자면, Relational DB에 대한 내용이다