buffer란 말그대로 양동이 역할을 하는 것이다.
보통 DB를 물탱크에, buffer를 물양동이에 비교한다.
DB 버퍼는 데이터베이스 시스템에서 캐시처럼 작동하여 데이터 접근 속도를 향상시키고, 디스크 I/O를 최소화하는 역할
역할1. 시간 절약을 위해 한 번에 모아서 처리 (디스크 I/O 최소화)
Disk <-> output 거리가 멀기 때문에, Disk에서 정보를 가져와서 -> 출력, 가져와서 -> 출력하는 것보단
Disk에서 필요한 정보를 buffer에다 저장해놓은 다음에 한번에 -> 출력 하는 것이 전체적인 시간으로 봤을 땐 이득
(java의 bufferedReader)
만약 buffer가 다 안 찼는데도 운반하고 싶다면 flush를 써서 남은 쪼가리도 옮겨주면 된다.
위의 예시로 예를 들자면, 물을 한 손에 담아서 필요할 때마다 운반하는 것이 아니라 필요할 때마다 buffer에 담은 후 한번 옮기는 것
역할2. 캐시의 역할
DBMS에서 DB buffer는 cache역할도 수행한다.
buffer를 갖다준다고 끝이 아니라 최근에 접근했던 데이터이기 때문에 필요하면 disk보다 가까운 buffer에서 가져와서 쓴다
(buffer hit, buffer miss)
- buffer가 다 차면
- 오래된 걸 버리기(LRU)
- 반으로 나누기 (16K -> 8K, 8K)
- 자주 쓰는 거 / 그렇지 않은 거
- 새로 추가된 거/ 추가된 지 오래된 거
- 등의 기준으로 나눔
- 새 양동이 쓰면 되지 왜 굳이 반으로 나누지?했는데 좀 더 기준을 가지고 효율적으로 참조하기 위해 정렬하는 느낌
'CS > Data Structure, DB' 카테고리의 다른 글
B-Tree와 DB index (0) | 2024.04.27 |
---|---|
Binary Tree, Binary Search Tree, B-Tree (0) | 2024.04.27 |