Block은 storage allocation과 data transfer의 단위
DB 시스템은 disk와 memory간의 block transfer를 최소화한다.
main memory에 block을 최대한 많이 올려서 disk access를 줄일 수 있다.
Buffer: disk block의 copy를 저장할 수 있는 main memory의 부분
Buffer Manager: main memory의 buffer 공간을 할당하는 subsystem
program은 disk에서 block read가 필요할 때, buffer manager를 호출
READ

WRITE

TRANSACTION COMMIT

Buffer replacement strategy
Buffer replacement policies
대부분의 OS는 LRU(Least Recently Used)전략을 사용 -> 하지만 DB query에는 좋지 않음
Toss-immediate strategy: process가 끝나자마자 사용한 block 방출
MRU(Most Recently Used) strategy: block이 process된 뒤 해당 block은 replace될 후보가 됨
Indexing은 data의 access 속도를 높이기 위해 사용됨
Search key - record를 찾는데 사용되는 attribute의 set
Index file 각 record의 search key - pointer로 구성됨
index는 보통 원래 table보다 훨씬 작음
Index의 두 가지 기본적인 종류
Index evaluation metrics
search key value를 기준으로 정렬하여 저장
Clustered Index(primary index): index에서의 key의 순서 = file에서의 순서
Secondary Index(nonclustered index): file에서의 순서와 index에서의 key의 순서가 다름

index record는 실제 record의 pointer를 가지고 있는 bucket의 pointer를 가지고 있음
secondary index는 dense해야 함
Dense Index File
모든 search key value에 대한 index record가 있음
Ex) instructor relation의 ID에 관한 index

Sparse Index File
일부 search key에 대한 index만 가지고 있음
record가 search key를 기준으로 정렬되었을 때만 가능

Multilevel Index
record가 매우 많아 index file의 크기가 memory 크기보다 커지는 경우 이를 해결하기 위해 사용
실제 데이터를 가리키는 inner index file들과
그 inner index file들을 가리키는 outer index file을 만들어 운영
