DFS lock handle 이벤트 발생 시나리오

- ORDER 속성을 가진 시퀀스를 생성하되 캐시의 크기를 20(Default) 하면 노드는 1~20 시퀀스 값을 가지고 있게 된다.

-   노드마다 10개의 세션들이 동시에 NEXTVAL 호출한다.

-  시퀀스 값을 요청할 마다 현재 시퀀스 마지막으로 사용된 값을 찾기 위해 다른 노드들과 통신을 한다. 가령, 노드A에서 1~3까지 먼저 사용하였고, 노드B에서 시퀀스 값을 요청했다면 노드A 어디까지 사용했는지 확인 후에야 노드B 4 제공 하는 것이 가능해진다.

-  이와 같은 작업은 노드간에 동기화를 필요로 하므로 DFS lock handle 이라는 이벤트대기가 발생하게 된다.


DFS lock handle 이벤트 대기 발생 이유

-  NEXTVAL 호출될 때마다 마지막으로 사용된 시퀀스 값을 확인하기 위한 다른 노드들과의 동기화 작업은 반드시 SV락을 획득한 후에 가능하므로 SV 경합이 발생하게 된다.

-  더욱이 시퀀스의 CACHE 속성이 20(Default)으로 작아, 딕셔너리 변경이 잦아지고 이로 인해 SV 락을 보유하는 시간이 증가함에 따라 이를 대기하는 다른 세션들의 대기시간은 더욱 길어지게 된다.

-  노드간의 시퀀스에 대한 동기화의 보호는 SV락을 통해서 이루어지며, 대기는 DFS lock handle 이벤트로 확인된다.




성능 개선 방법

노드간 시퀀스 값 동기화를 가능하면 줄일 있는 방법

-  시퀀스에서 ORDER 속성을 제거하면 동기화 과정 자체가 필요 없어지므로 가장 효과적으로 문제를 해결할 있으므로 업무를 확인하여 ORDER 속성 제거를 검토한다.

-  ORDER속성을 제거하는 것이 불가능하다면 CACHE 속성을 충분히 크게 하여 잦은 딕셔너리 변경으로 인해 낭비되는 시간을 최소화 한다.

 


사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 사이버몰의 이용약관 바로가기

+ Recent posts