1. Event 정의
1) 정의
- 서버 프로세스가 Commit 또는 Rollback을 수행한 후, LGWR 프로세스가 관련 Redo Record를 Redo Buffer에서 Redo Log File로 기록할 때까지 대기하는 이벤트
2) 대기발생 사유
- log file sync 대기는 Transaction 완료와 관련되어 있음(Commit, Rollback)
- 과다한 log file sync 대기시간은 Commit요청이 과다하게 발생된다는 것을 의미
☞ Commit을 과다하게 발생하는 것이 log file sync 대기의 가장 대표적인 원인이다.
☞ 만일 세션이 오랜 시간 log file sync 대기이벤트를 대기한다면, 해당 세션이 배치 프로세스인지, OLTP 프로세스인지 또는 미들티어(Tuxedo, Weblogic 등)와 같은 영구 커넥션(persistent connection)인지 확인해야 한다.
☞ 만일 세션이 배치 프로세스라면, 루프 내에서 반복적으로 Commit을 수행할 수 있다.
☞ 이 경우 모듈의 이름을 확인한 후 Commit의 횟수를 줄일 수 있는지를 점검하기 위해서 개발자에게 코드를 점검하라고 요청해야 한다.
☞ 이것은 어플리케이션 이슈이며, 해결 방안은 단순히 불필요한 Commit을 제거하여 전체적인 Commit 발생률을 줄이는 것이다.
☞ 일반적인 경우 Commit을 한번 수행할 때마다 한번의 log file sync 대기가 발생한다.
☞ 따라서 여러 세션에서 동시에 대량의 Commit을 수행하면 log file sync 대기가 광범위하게 나타날 수 있다.
- Redo Log I/O 성능 저하 시 log file sync 대기 증가 가능
☞ 리두 로그 파일이 위치한 I/O 시스템의 성능이 느린 경우 LGWR의 sync write를 수행하는 시간이 늘어나고 이로 인해 log file sync 대기시간이 증가
- 리두 버퍼 크기와 log file sync
☞ 일반적으로 리두 버퍼의 크기가 큰 경우 LGWR에 의한 백그라운 기롯 횟수는 줄어들지만, 기록해야 할 데이터의 양이 많아지므로 log file sync 대기시간 증가
2. log file sync 테스트
1) log file sync 대기이벤트는 commit 회수만큼 비례해서 증가함
-- 1. 현재 log file sync 값 확인
SELECT EVENT,
TOTAL_WAITS,
TIME_WAITED
FROM V$SESSION_EVENT
WHERE SID = (SELECT SID
FROM V$MYSTAT
WHERE ROWNUM = 1)
AND EVENT = 'log file sync';
EVENT TOTAL_WAITS TIME_WAITED
------------------------------ ----------- -----------
log file sync 4 3
-- 2. UPDATE 한건 수행 후 COMMIT하고 log file sync 값 확인
UPDATE REDO_TEST
SET ID = 1
WHERE ROWNUM = 1;
COMMIT;
SELECT EVENT,
TOTAL_WAITS,
TIME_WAITED
FROM V$SESSION_EVENT
WHERE SID = (SELECT SID
FROM V$MYSTAT
WHERE ROWNUM = 1)
AND EVENT = 'log file sync';
EVENT TOTAL_WAITS TIME_WAITED
------------------------------ ----------- -----------
log file sync 5 4
-- 3. UPDATE 한건 수행 후 COMMIT하고 log file sync 값 확인
UPDATE REDO_TEST
SET ID = 1
WHERE ROWNUM = 1;
COMMIT;
SELECT EVENT,
TOTAL_WAITS,
TIME_WAITED
FROM V$SESSION_EVENT
WHERE SID = (SELECT SID
FROM V$MYSTAT
WHERE ROWNUM = 1)
AND EVENT = 'log file sync';
EVENT TOTAL_WAITS TIME_WAITED
------------------------------ ----------- -----------
log file sync 6 5
3. 해결방법
1) Commit 회수의 감소
- 일반적인 경우 커밋을 한번 수행할 때 마다 한 번의 log file sync 대기가 발생함
- 잦은 커밋이 문제가 되는 경우 그룹 커밋을 권장함
2) Redo Log 쓰기 속도 개선
- RAID5 보다는 RAID1 + 0 사용
- Raw Device 사용
☞ 로우 디바이스는 파일 시스템 운영에서와 달리 OS 버퍼를 토하지 않고도 직접 디스크 쓰기 수행이 가능함
☞ inode등 자유 공간 정보 관리를 위한 부담이 없으므로, 일반적으로 파일 시스템보다 I/O 속도가 우수함
☞ 대부분의 OPS 환경에서 데이터 파일과 같은 공용 파일의 저장 장소로 도우 디바이스의 사용 요구됨
문서에 대하여