[DB] 성능 튜닝의 핵심 Buffer Cache

최민석·2021년 6월 26일
1

Buffer Cache 의 원리



오라클은 데이터 I/O의 단위가 블록단위로 이루어진다.

블록이란?

블록이란 데이터 베이스에 저장된 수많은 데이터를 논리적으로 구분할때,
가장 작은 단위이다.
디폴트 크기는 8KB이다.

블록 I/O란?

블록 I/O는 사용자가 단 하나의 레코드를 가져오고, 수정할때도
적용되는 최소단위가 블록이란 뜻이다.



Buffer Cache가 왜 성능을 높일까?

오라클에서 데이터에 접근할때는 독특한 원리가 있는데,
Server Process와 DB사이에 있는 버퍼캐시를 반드시 거친다는 점이다.
1. 데이터를 조회할때 버퍼캐시에 해당 데이터 블록이 캐싱되어 있는지 검사한다.
2. 캐싱되어 있다면 즉시 메모리 I/O를 적용하여 데이터를 가져온다.
3. 캐싱되지 않았다면 디스크 I/O를 적용하여 DB에 접근한다.

  • LRU 알고리즘으로 인해 자주 사용되는 데이터는 캐시에 오래 머무르게 되는데,
    이과정에서 캐싱 효율이 올라가고 메모리 I/O 빈도가 높아진다.

두번째는 Buffer Pinning 이다. 버퍼 피닝은 하나의 블록을 버퍼캐시에서 접근한뒤, 연결을 끊지않고 유지한다. 하나의 블록에는 여러개의 레코드가 있으므로 , 이 블록안의 모든 레코드를 참조할때는 ( Index Range Scan 등) Pinning을 이용하여 성능을 올린다.

이후 정리에서 더 자세히 다룰 예정이다.

profile
🔥🔥🔥🔥 G U N F E 🔥🔥🔥🔥

0개의 댓글