1. 개요

1) 이벤트 원인

  • 버퍼 캐시를 경유하는 모든 데이터는 DBWR에 의해 디스크에 기록이 되는데, 이 때 더티 블록을 기록하기 위한 I/O 요청을 보낸 후 요청이 끝나기를 기다리는 동안 이 이벤트를 대기함.
  • 'db file parallel write' 이벤트의 P1, P2, P3는 각각 'file#', 'block#', 'block수'를 의미함.
  • 이 이벤트는 I/O 이슈이며, 광범위하게 발견될 경우, 데이터 파일과 관련된 I/O 시스템에 심각한 성능저하현상이 발생하는 것으로 판단 가능함.
  • 만약, I/o 시스템에 문제가 없는데도 확인이 된다면, 그 때는 I/O 시스템이 감당할 수 없을 정도으 ㅣ많은 쓰기 요청이 발생하는 것으로 판단 가능.

2. 해결방법

1) I/O 시스템의 성능이 느린 경우

  • 만약 DBWR 프로세스에 이 이벤트 대기시간이 길게 나타날경우, I/O 시스템에 문제가 있다고 판단할 수 있음.
  • 이 때, 서버 프로세스는 연쇄적으로 'free buffer waits' 또는 'write complete waits' 이벤트에 대한 대기를 보임.
  • 해결방안
    • 'Raw Device'와 'Asychronous IO'를 조합해서 사용하는 것이 지금까지 알려진 최선의 방법
    • OS 차원에서 'Direct I/O'를 사용함. CPU 개수가 충분하다면, DB_WRITE_PROCESSES 파라미터 값을 조정해서 DBWR의 개수를 증가시키는 것이 병행 가능.
      복수개의 DBWR은 비동기를 흉내내는 효과를 갖으며, 오라클이 권고하는 DBWR 프로세스는 'CPU_COUNT / 8' 임.

2) I/O 작업이 너무 많은 경우

  • 잦은 체크포인트가 발생하는 경우 DBWR의 활동량이 지나치게 많아지고 이로 인해 DBWR의 성능이 저하될 수 있음.
  • FAST_START_MTTR_TARGET 파라미터 값을 지나치게 작게 줄 경우 빈번하게 'Incremental Checkpoint' 작업이 발생하게 되고, 이로 인해 DBWR의 성능저하를 불러올 수 있음.
  • I/O 시스템에 문제가 없는데도 이 이벤트가 보일 경우, DBWR에게 불필요하게 부하를 주는 요소가 없는지 확인 필요함.

3) 버퍼 캐시를 비효율적으로 사용하는 경우

  • 버퍼 캐시를 비효율적으로 사용할 경우, 'Default, Keep, Recycle' 기능을 적절히 사용하여 성능을 향상시킬 수 있음.

문서에 대하여