개념

- Server Process 가 DML 작업을 하면 Redo Log Buffer에 쌓게 된다 

- Commit을 수행하면 Redo Log Buffer에 있던 해당 DML은 Redo Log File에 기록이 된다 

 

Log File Sync란 

- Server Process 가 Commit을 수행하여 Redo Log Buffer에 있는 내용을 Redo Log File로 Write해달라고  LGWR한테 요청할 때 발생하는 Wait 이다

-  빈번한 Commit이 발생하거나 , Redo Log File의 IO성능이 좋지 못할 경우 발생한다 (RAID-5일때 많이 발생한)

 

Log File Parallel Write란

- LGWR이 OS한테 Write를 요청할 때 발생한다 (OS쪽에서 ACK가 오면 Wait는 풀리게 된다)

 

 

발생 원인 및 개선 방안

1. 너무 빈번한 Commit

-> Commit 단위를 줄인다 

- 여러 server process가 건당 commit을 한다고 해서 왠만해선 log file sync 이벤트가 성능에 영향을 미치진 않는다 

- 그럼 언제 생기는가? 

  - PL/SQL에서 Loop 돌면서 건당 Commit 할 때 자주 발생한다 

  - 건당 Commit을 묶어서 처리하거나 Array 프로세싱으로 처리를 하거나 한다 

 

2. Storage I/O Write 성능 이슈 

2-1) HDD이면서 RAID-5일 경우 많이 발생한다  (SSD는 잘 발생 안함) 

-> RAID-5 말고 RAID 1+0 구성을 고려한다 

2-2) Storage DR을 Sync Level로 구성할 경우 - DR system간의 거리에 따라서 Log File Sync 대기시간이 증가하게 된다 

   ( 벤더마다 sync 제한을 두는 경우가 있다 (150km..등))

-> Sync가 아닌 Async로 구성한다 

2-3) Redo Log Buffer 크기가 너무 클 경우

- def 10M 로 줘도 충분하지만, 40M,100M까지도 구성하는데 ... 1G일 경우 다른문제가 생길 수 있다

- 한번에 기록해야될 데이터가 많아지면서 IO부하 증가 ->  Log File Sync 대기시간이 증가