COMMIT WRITE

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] 기본 정보

[편집] Parameter 정보


Syntax COMMIT_WRITE = {IMMEDIATE | BATCH},{WAIT |NOWAIT}
Default IMMEDIATE, WAIT
설정방법
  • Parameter File
  • ALTER SYSTEM SET COMMIT_WRITE = BATCH, NOWAIT
  • ALTER SESSION SET COMMIT_WRITE = BATCH, NOWAIT
  • COMMIT WRITE BATCH NOWAIT
지원 10gR2

[편집] 설명

Transaction에 대한 Commit 수행시 Redo Write를 실행하는 방식을 결정한다. 사용자가 Commit을 수행하면 오라클은 Redo Buffer의 변경 내역을 Redo Log에 즉각(IMMEDIATE) 기록하며, 실제 Redo Log에 기록될 때까지 기다린다(WAIT). 이러한 수행 방식은 사용자에 의한 데이터 변경 내역이 Redo Log에 기록되어 사후 Recovery에 사용될 수 있다는 것을 100% 보장하기 위해서이다. COMMIT_WRITE 파라미터를 이용하면 이러한 Redo Log 기록 방식을 변경할 수 있다. 가능한 조합은 다음과 같다.

  • IMMEDIATE + WAIT: 기본 방식으로 Redo Write를 즉각 요청하고 기록이 끝날 때까지 기다린다.
  • IMMEDIATE + NOWAIT: 요청은 즉시 보내되, 기록이 끝나기를 기다리지 않고 사용자에게 제어권을 넘겨준다.
  • BATCH + WAIT: 여러 개의 Redo Write 요청을 모아서 한번에 요청하며, 기록이 끝날 때까지 기다린다.
  • BATCH + NOWAIT: 여러 개의 Redo Write 요청을 모아서 한번에 요청하며, 기록이 끝나기를 기다리지 않고 사용자에게 제어권을 넘겨준다.


[편집] 참고 사항

[편집] COMMIT_WRITE와 OLTP/DSS

OLTP 환경에서는 COMMIT_WRITE 파라미터를 변경해서는 안된다. BATCH나 NOWAIT 모드의 Commit에서는 Redo Log에 데이터가 정확하게 저장된다는 보장이 없기 때문에 비정상적인 종료시 데이터의 정합성을 보장할 수 없다.
DSS 환경에서는 데이터의 세밀한 정합성이 불필요한 경우가 많기 때문에 성능 개선을 위해서 이 파라미터를 적극적으로 활용할 수 있다.

[편집] PL/SQL의 Asynchronous Commit

PL/SQL 블록 내의 Commit 요청은 마치 BATCH, NOWAIT 모드의 COMMIT_WRITE 파라미터를 사용하는 것과 같은 효과가 있다. 이를 Asynchronous Commit이라고 부른다. 따라서 배치 작업을 처리할 경우에는 PL/SQL을 사용하는 것이 성능면에서 유리하다.

[편집] 관련된 정보들

  1. _WAIT_FOR_SYNC 파라미터
  2. _DISABLE_LOGGING 파라미터
  3. log file sync 대기이벤트


[편집] 외부 참조