Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Similar documents
목 차

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

13주-14주proc.PDF

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

PowerPoint Presentation

歯sql_tuning2

10.ppt

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

90

untitled

MS-SQL SERVER 대비 기능

SQL PLAN MANAGEMENT 활용 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 오라클은비롯한많은관계형 DBMS 에서는사용자의 SQL 질의를효율적으로처리하기위해옵티마이저를사용하고있다. 옵티마이저는유저가수행하는 SQL 을받아실행계획을생성하고, 실제 SQL 은이실행계획을

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes

원장 차세대 필요성 검토

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담

데이터베이스-4부0816

2002 Game White paper 2002 Game White paper

MySQL-Ch10

NLJ BATCH 과부분범위처리 엑셈컨설팅본부 / DB 컨설팅팀오수영 개요 오라클은새로운버전이출시될때마다한층업그레이드된기능들이추가된다. 이기능들은사용자에게편리함을제공함은물론이고, 기존의기능들이성능적으로업그레이드되어보다강력해지기도한다. 그러나때로는새롭게추가된기능으로인해,

제목을 입력하세요.

62

윈도우시스템프로그래밍

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

음악부속물

음악부속물

음악부속물

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

슬라이드 1

*캐릭부속물

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

윈백및업그레이드 Tibero Flashback 가이드

슬라이드 1

Part Part

PART

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

만화부속물

만화부속물

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

PowerPoint 프레젠테이션

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

MySQL-Ch05

ORACLE EXADATA HCC 압축방식이해하기 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 시간이지나면서데이터는급속하게증가하고있다. 데이터가증가함에따라 DBMS 에서관리되어지는정보도급속하게증가하고있다. 이로인해저장공간의부족으로하드웨어비용의증가와데이터처리성능에많은문제점들

Microsoft Word - dataguard_세미나_v1.8.doc

오라클 데이터베이스 10g 핵심 요약 노트

untitled

Microsoft PowerPoint - 10Àå.ppt

강의 개요

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

USER GUIDE

Microsoft Word - 기술노트[23회] Logminer.doc

最即時的Sybase ASE Server資料庫診斷工具

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

레프트21

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

문서 템플릿

MaxGauge( 맥스게이지 ) 를이용한 SQL 모니터링, 진단 / 분석및튜닝가이드 엑셈

NoSQL

Slide 1

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - 05_SUBPROGRAM.doc

Yggdrash White Paper Kr_ver 0.18

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

FlashBackt.ppt

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

슬라이드 1

Oracle Wait Interface Seminar

DBMS & SQL Server Installation Database Laboratory

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

슬라이드 1

리눅스 free 메모리의이해 엑셈컨설팅본부 /DB 컨설팅팀임경석 개요 리눅스환경에서메모리사용률을모니터링하기위해명령어를실행하다보면시스템을기동한지얼마되지않아 free 영역의지표가급격히줄어드는것을쉽게확인할수있다. 리눅스어드민경험이있는사람이라면이것이무엇을의미하는지알수있지만그렇

세미나(장애와복구-수강생용).ppt

Tina Admin

슬라이드 제목 없음

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

untitled

JUNIT 실습및발표

Remote UI Guide

윈도우시스템프로그래밍

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

/chroot/lib/ /chroot/etc/

Jerry Held

*2009데이터_3부

chap 5: Trees

ETL_project_best_practice1.ppt

untitled

Interstage4 설치가이드

Transcription:

Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event 를조사해보면, Log File Sync 가이에속해있는경우가대부분이다. 하지만 Log File Sync 를포함하여 Log File Parallel Write 등의 Commit Wait Class 에해당하 는 Wait Event 가발생하는것자체가문제가되진않는다. 이는, Oracle 은 Commit 이나 Rollback 명령이요청되면이를 LGWR 에게요청을전달하며, LGWR 은 Redo Buffer 에서가장마지막에기록이이루어진이후시점부터 Commit 또는 Rollback 지점까지의모든 Redo Entry 를 Redo Log File 에기록하는메커니즘을가지고있다. 따라서, 언급한 Wait Event 들은이와같은과정에서필연적으로발생하는 Transaction 의부가적인현상일뿐그자체로문제가된다고볼수없다. 다만, 해당 Wait Event 를대기하는시간이과도하게긴경우, 예를들어과도한 Commit 이발생하는경우등에따라서는이대기시간을감소시켜전반적으로 DB 시스템의최적화된성능을보장할수도있다. 이문서는 Commit_wait, Commit_Logging 파라미터값의수정을통해 Log File Sync 의대기시간을경감할수있는방안과이에대한주의사항에대한정보를알아보는것을목적으로한다. 186 2013 기술백서 White Paper

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따르는비용도감수해야할것이다. 이에대한자세한내용은마지막부분에언급하 는것으로하고, 두파라미터에대한설명과수정가능한값들에대한의미를알아보자. Commit_Wait Commit_Wait 파라미터는 Server Process 가 Redo Data 를 Redo Log File 에기록을완 료할때까지대기할것인지말것인지를결정하는파라미터이다. Wait : Wait 값은위파라미터의기본값이다. 이는 LGWR 의작업이완료되는순간까지 Server Process 가대기함을의미한다. Nowait : 말그대로 Server Process 는해당작업에대해대기하지않음을의미한다. 이경우, 시스템의 ACID 의특성중지속성이침해될수있으므로일반적으로는 Nowait 으로설정하는것을권고하지는않는다. Force_Wait : Wait 설정값과유사한의미를갖는다. 다만, 시스템레벨에서설정한경우, 세션레벨에서이를무시할수있으며, 그반대의경우도가능하다. 즉, 낮은수준에서의 Wait 설정이라고이해하면된다. Commit_Logging Commit_Logging 파라미터는 LGWR 가 Redo Data 를일괄로기록할지의여부를결정하 는파라미터이다. Immediate : 이값이기본값이며, 각 Commit 마다 LGWR 가쓰기작업을진행함을의미한다. Batch : 이는 LGWR 가일괄로 Redo Data 를기록함을의미한다. 작은단위의 Transaction 의경우이방법으로기록하면보다효율적인방법이될것이다. Part 1 ORACLE 187

위에서설명한바와같이이두파라미터의설정값의변경만으로도 Log File Sync 를포함한 Commit Class 의대기이벤트들의대기시간이획기적으로감소할수있다는가능성이있음을알수있다. 사실이기능이처음소개된것은 10G 때부터인데, 10G 에서는파라미터가 Commit_Write 라는파라미터만존재한다. 설정값을 Wait, Immediate 나 Nowait, Batch 등으로설정한다. 11G 에와서파라미터가위 와같이두가지로분리되어적용할수있도록변경되었다. Parameter 값변경에따른성능테스트 DECLARE l_dummy INTEGER; BEGIN FOR i IN 1..1000 LOOP INSERT INTO t VALUES (i, rpad('*',100,'*')); COMMIT; SELECT count(*) INTO l_dummy FROM dual; END LOOP; END; 본격적으로두파라미터의값의변경에따른위의 PL/SQL Block 과같이건건이 Commit 을수 행하는트랜잭션의성능차이가어느정도인지테스트를통해알아보도록하자. 참고 : 아래결과는 STRACE 를이용하여서버프로세스와 LGWR 의 System Call 횟수를보여주는 것으로별도첨부된 Script 를참조할것. WAIT / IMMEDIATE ***** Server Process ***** 188 2013 기술백서 White Paper

100.00 0.069561 69 1005 1 semtimedop 100.00 0.069561 1005 1 total ***** Log Writer ***** 100.00 0.013919 14 1016 io_submit 100.00 0.013919 1016 total NOWAIT / IMMEDIATE ***** Server Process ***** 100.00 0.002195 439 5 1 semtimedop 100.00 0.002195 5 1 total ***** Log Writer ***** 100.00 0.010073 10 1015 io_submit 100.00 0.010073 1015 total NOWAIT / BATCH ***** Server Process ***** 100.00 0.002132 533 4 1 semtimedop Part 1 ORACLE 189

100.00 0.002132 4 1 total ***** Log Writer ***** 100.00 0.000533 36 15 io_submit 100.00 0.000533 15 total 두파라미터의값이 Default 값인경우 (Wait/Immediate), Server Process 와 LGWR 의 System Call 횟수는 Commit 횟수와비슷한것으로나타났다. Nowait/Immediate 로설정한경우에는 Server Process 의 Call 횟수는급감하였지만 LGWR 의경우는여전히 Commit 횟수와비슷한수치를유지하고있다. 반면에 Nowait/Batch 로설정한경우, 두프로세스모두시스템 Call 횟수가눈에띄게감소한 것으로나타났다. 이것이원인이되어 Log File Sync 등의 Wait Event 대기시간이감소하여전 반적인성능향상의결과로나타난다. 주의사항및결론 앞서소개한빈번한 Commit 에의한대기현상을감소하는방안은분명매력적인방법이다. 하지만이역시공짜는아니다. ACID(Atomicity, Consistency, Isolation, Durability) 라는 Transaction 의특성중 Durability( 지속성 ) 가위배되는상황이발생할수있기때문이다. 파라미터값의변경의의미는단순히 Commit 시마다 LGWR 가 Redo Log File 에기록하지않고일정량을한번에기록하여대기시간을감소시키려는목적인데, 예기치않은 Instant Failure 가발생한다거나 DB Shutdown 상황이발생하면 Transaction 의완전한복구는사실상불가능하다. 190 2013 기술백서 White Paper

따라서, 금융시스템과같은중요한시스템에해당파라미터의변경적용은고려사항이아니다. 즉, DB 시스템의성격과업무의특성을고려하여선별적인적용이필요함을의미한다. 예를들어, Data Migration 시에세션단위로파라미터변경값을적용하여작업을수행한다던 지, 빈번한 Commit 이발생하는특정업무 ( 단, Transaction 의지속성에큰영향을받지않는 Data 에한함.) 에선별적으로적용하는등의적절한대처가필요하다. 상황에따라영리하게적용할수있다면 Commit Class 에해당하는 Wait Event 들의대기시간 을감소시켜성능을개선할수있는확실한카드로사용될수있다고믿는다. 별도첨부 Script Script 1. Commi.sql SET DEFINE ON VERIFY OFF FEEDBACK OFF PAGESIZE 0 TERMOUT OFF ECHO OFF ALTER SESSION SET commit_wait = &1; ALTER SESSION SET commit_logging = &2; CREATE TABLE t (n NUMBER, pad VARCHAR2(1000)); SPOOL servprc.pid SELECT p.spid FROM v$process p, v$session s WHERE p.addr = s.paddr AND s.sid = sys_context('userenv','sid'); SPOOL OFF execute dbms_lock.sleep(2) DECLARE l_dummy INTEGER; BEGIN FOR i IN 1..1000 LOOP INSERT INTO t VALUES (i, rpad('*',100,'*')); COMMIT; SELECT count(*) INTO l_dummy FROM dual; END LOOP; END; / DROP TABLE t PURGE; EXIT Part 1 ORACLE 191

Script 2. Commit.sh #/bin/bash user=$1 password=$2 commit_wait=$3 commit_logging=$4 lgwr_pid=`pgrep -f lgwr_$oracle_sid` strace -p $lgwr_pid -c -e io_submit -o lgwr.log & strace_pid=`pgrep -f strace` sqlplus -s $user/$password @commit.sql $commit_wait $commit_logging & sleep 1 strace -p `head -1 servprc.pid` -c -e semtimedop -o servprc.log rm servprc.pid kill -1 $strace_pid "***** Server Process *****" cat servprc.log "***** Log Writer *****" cat lgwr.log 192 2013 기술백서 White Paper