메뉴 건너뛰기

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성능의 향상의 가장 근본적인 해결책은 논리적인 블록 요청 횟수를 최소화하는것이다.



 

번호 제목 글쓴이 날짜 조회 수
27 5. Direct Path I/O file balto 2010.07.10 12191
26 8. 블록 클린아웃 휘휘 2010.05.31 12287
25 7. PL/SQL 함수의 특징과 성능 부하 실천하자 2010.07.12 12606
24 6. RAC 캐시 퓨전 file 토시리 2010.07.19 12631
23 10. V$SQL 실천하자 2010.06.14 12680
22 8. Statspack / AWR balto 2010.06.13 12768
21 1. Library Cache Lock file balto 2010.07.17 12803
20 7. Result 캐시 휘휘 2010.07.19 12969
19 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 14030
18 1. Explain Plan 실천하자 2010.06.06 14666
17 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.28 14674
16 3. 버퍼 Lock [1] 휘휘 2010.05.24 15232
15 9. ASH(Active Session History) 실천하자 2010.06.14 15608
14 2. SQL 처리과정 file 휘휘 2010.06.28 15635
13 5. Fetch Call 최소화 file 휘휘 2010.07.05 16851
12 1 장. 오라클 아키텍처 운영자 2010.05.20 17850
11 4. Array Processing 활용 file 휘휘 2010.07.05 18250
10 9. Static vs. Dynamic SQL [1] balto 2010.07.04 18347
9 11. Shared Pool file 실천하자 2010.05.31 18512
8 5. Undo file 토시리 2010.05.31 18661