본문 바로가기
CS/Data Structure, DB

DB Buffer

by kyj0032 2024. 4. 27.

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