메뉴 건너뛰기

bysql.net

2장._트랜잭션과_Lock

2012.03.17 00:23

AskZZang 조회 수:5246


02 트랜잭션과 Lock

 

01  트랜잭션 동시성 제어

02  트랜잭션 수준 읽기 일관성

03  비관적 vs. 낙관적 동시성 제어

04  동시성 구현 사례

05 오라클 Lock

 

 

읽기 일관성 구현 방법

-      DB2, SQL Server, Sybase : Lock을 통해 읽기 일관성을 구현

-      오라클 : Undo 데이터를 이용해 읽기 일관성을 구현

 

오라클은 데이터를 읽을 때 Lock을 사용하지 않다 보니 확실히 동시성 측면에서는 다른 DBMS보다 우월하다고 평가할 수 있다.

 

오라클은 10g부터 Wait Event를 아래와 같이 분류해 놓았다.

 

SQL> select

wait_class, count(*)

from v$event_name

group by wait_class

order by 1;

 

WAIT_CLASS                                                       COUNT(*) 

---------------------------------------------------------------- ---------

Administrative                                                          46

Application                                                             12

Cluster                                                                 48

Commit                                                                   1

Concurrency                                                             25

Configuration                                                           23

Idle                                                                    63

Network                                                                 27

Other                                                                  601

Scheduler                                                                2

System I/O                                                              24

User I/O                                                                17

 

12 rows selected.

 

주목할 것은 오라클에서 발생하는 Lock 경합의 대부분을 차지하는 enq: TM - contention 이벤트와

enq: TX – row lock contention 이벤트가 Concurrency가 아닌 Application으로 분류돼 있다는 사실이다.

 

 

SQL> select event#,

       name,

       wait_class

from   v$event_name

where  name in (

               'enq: TM - contention',

               'enq: TX - row lock contention'

               );

 

EVENT#    NAME                                 WAIT_CLASS                                                      

--------- ----------------------------------- --------------------------------------------------

      178 enq: TM - contention                 Application                                                    

      186 enq: TX - row lock contention        Application                                                    

 

2 rows selected.

 

 

테이블 Lock과 로우 Lock 관련 이벤트를 프로그램 오류와 같이 분류한 것인 이들 문제가 DBA 이슈가 아니라 개발자 이슈임을 분명히 밝히고 있는 것이다.

 

Lock에 대한 근본적인 해법은 애플리케이션 로직에서 찾아야 한다.


번호 제목 글쓴이 날짜 조회 수
26 3._SQL트레이스 sapius 2012.04.04 26846
25 8._Statspack_AWR 시와처 2012.04.01 11478
24 7._Response_Time_Analysis_방법론과_OWI file 시와처 2012.04.01 5739
23 6._V$SYSTEM_EVENT 시와처 2012.04.01 3306
22 4._동시성_구현_사례 [1] dasini 2012.03.27 11685
21 5._오라클_Lock file 시와처 2012.03.26 12574
20 3._비관적_vs._낙관적_동시성_제어 dasini 2012.03.26 6182
19 2._AutoTrace 남송휘 2012.03.26 2917
18 1._Explain_Plan 남송휘 2012.03.26 4325
17 3장._오라클_성능_관리 남송휘 2012.03.26 2890
16 2._트랜잭션_수준_읽기_일관성 file AskZZang 2012.03.20 6141
15 1._트랜잭션_동시성_제어 AskZZang 2012.03.20 4665
14 11._Shared_Pool 박영창 2012.03.19 3157
13 10._대기_이벤트 박영창 2012.03.19 10368
12 9._Snapshot_too_old 박영창 2012.03.19 9729
11 8._블록_클린아웃 시와처 2012.03.19 11997
10 7._Consistent_vs._Current_모드_읽기 file 시와처 2012.03.18 5495
» 2장._트랜잭션과_Lock AskZZang 2012.03.17 5246
8 6._문장수준_읽기_일관성 file 정찬호 2012.03.12 57267
7 4._Redo file 남송휘 2012.03.12 5374
오늘:
3
어제:
1
전체:
2,197,940

Powered by XE.