메뉴 건너뛰기

bysql.net

2. Memory vs. Disk I/O

2010.07.12 08:00

휘휘 조회 수:7439


(1) I/O 효율화 튜닝의 중요성
  • 디스크를 통한 입출력은 물리적인 동작에 의해 자료를 가져오게 되므로 속도가 느림
  • 그러므로 디스크 I/O를 최소화 하고, 대부분의 처리를 메모리에서 할수 있도록 버퍼 캐시 효율성을 높이면 데이터 베이스 성능을 향상시킬수 있음

(2) 버퍼 캐시 히트율 (Buffer Cache Hit Ratio)

  • BCHR
    • 전체 읽은 블록 중에서 얼만큼을 메모리 버퍼 캐시에서 찾았는지 나타 내는 것
  • 공식

BCHR = (캐시에서 독바로 찾은 블록수 / 총읽은 블록수) * 100
= ((논리적 블록읽기 - 물리적 블록읽기) / 논리적 블록 읽기 ) * 100
= (1-(물리적 블록읽기) / (논리적 블록읽기) ) * 100

논리적 블록읽기 = 총읽은 블록수
캐시에서 곧바로 찾은 블록 수 = 논리적 블록읽기 - 물리적 블록읽기



  • 모든 블록 읽기(Direct Path Read 방식 제외) 는 버퍼 캐시를 통해 이루어지며 읽고자 하는 블록을 버퍼 캐시에서 찾아보고 없을때 디스크로 읽어들이고, 디스크에 읽을때 역시 버퍼캐시에 적재한후 읽어들임



call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.02       0.02          0          2          0           0
Fetch     3001      0.40       0.64         24       3135          0       30000
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total     3003      0.43       0.67         24       3137          0       30000




Disk(물리적 블록읽기) : 24
Query + Current (논리적 블록읽기): 3137

BCHR= (1-(Disk / (Query + Current))) * 100
=(1-(24/(3137+0))) ) * 100
=99.25%



  •  I/O 효율화 튜닝
    • 논리적인 블록 요청 횟수를 줄이고 , 물리적으로 디스크에서 읽어야 할 블록 수를 줄이는 것

(3) 네트워크, 파일시스템 개시가 I/O 효율에 미치는 영향

  • 데이터베이스 서버와 스토리지 간에  NAS 서버나 SAN을 통해 연결되는 아키텍쳐 사용이 일반화되어 네트워크 속도가 성능에 영향을 끼치게 되며 
  • RAC의 경우 각 노드간 네트워크를 통해 캐시블록을 공유하므로 논리적블록으로 통계가 잡히더라도  실제 속도는 메모리+네트워크 전송속도가 되므로 예상보다 느려질수 있다.
  • 디스크 속도, SAN, RAC 인터커넥트등 무엇이라도 I/O성능의 향상의 가장 근본적인 해결책은 논리적인 블록 요청 횟수를 최소화하는것이다.