버퍼 캐시 히트율(Buffer Cache Hit Ratio)
- 버퍼 캐시 효율을 측정하는 지표로써 전체 읽은 블록중 메모리 버퍼 캐시에서 찾은 비율
BCHR = (버퍼 캐시에서 곧바로 찾은 블록 수 / 총 읽은 블록 수) × 100
-- BCHR은 주로 전체적인 관점에서 측정하지만, 개별 SQL에 대해서도 구해볼수 있으며,이 비율이 낮은것이 SQL 성능을 떨어뜨리는 주범임
call count cpu elapsed disk query current rows
------ ----- ----- ------- ---- ----- ------ ----
Parse 15 0.00 0.08 0 0 0 0
Execute 44 0.03 0.03 0 0 0 0
Fetch 44 0.01 0.13 18 822 0 44
------ ----- ----- ------- ---- ----- ------ ----
total 103 0.04 0.25 18 822 0 44
- Disk 항목이 디스크를 경유한 블록수
- 총 읽은 블록 수 = 822
- 버퍼 캐시에서 곧바로 찾은 블록 수 = 822 - 18 = 804
- CHR = (822 - 18) / 822 = 97.8%
- 논리적인 블록요청 횟수를 줄이고, 물리적으로 디스크에서 읽어야할 블록수를 줄이는것이 I/O 효율화 튜닝의 핵심 원리
1. 블록단위 I/O
- 데이터 파일에서 DB 버퍼 캐시로 블록을 적재할 때
- 데이터 파일에서 블록을 직접 읽고 쓸때
- 버퍼 캐시에서 블록을 읽고 쓸때
- 버퍼 캐시에서 변경된 블록을 다시 데이터 파일에 쓸 때
2. 메모리 I/O vs. 디스크 I/O
가. I/O 효율화 튜닝의 중요성
- 디스크를 경우한 데이터 입출력은 디스크의 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰기 때문에 느림
- 메모리를 통한 입출력은 전기적 신호에 불과하기 때문에 디스크를 통한 I/O에 디해 비교할수 없을정도로 빠름
- 모든 DBMS는 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾고 ,없을경우에는 디스크에서 읽어 버퍼 캐시로 적재 후 읽기/쓰기 작업을 수행
- 이러한 이유로 모든 데이터를 메모리에 올려놓고 사용하면 좋겠지만 메모리는 물리적으로 한정된 자원이므로
- 결국 디스크 I/O를 최소화하고 버퍼 캐시 효율을 높이는것이 데이터베이스 I/O 튜닝의 목표
windows 관리도구에 성능 모니터를 켠다.
빨간 X버튼을 누르고 초록색 +를 누르면 아래와 같은 창이 뜬다.
아래 cache bytes가 있지만 windows의 캐시이고 우리가 볼 것은 sql의 내용이므로
다음 사진을 참고한다.
아래 개체 명에 위치가 써 있고 그 위치에서 카운터 명인것을 선택하면 된다.
스투디오에서 select을 돌렸을 때 히트 레이트율이 잠깐 내려가는 것을 확인한다.!!!
Disk I/O는 덜 사용 함?
추가로 해보면 좋을 것...
'Database > 이론' 카테고리의 다른 글
실행계획(작성중) (0) | 2020.11.19 |
---|---|
트랜잭션 로그백업 (0) | 2020.11.19 |
데이터 베이스 구조 (0) | 2020.11.18 |
DBCC 명령어 (0) | 2020.11.18 |
buffer cache hit ratio 보는법 (0) | 2020.11.18 |