시퀀스 개체 차단
Aug 19 2020
우리는 많이 호출되는 시퀀스 객체에 문제가 발생했습니다. 테이블에 레코드를 삽입하기 전에 값을 할당하는 데 사용됩니다.
오늘 700 개 이상의 세션 (시퀀스 개체에서 다음 값을 가져 오려는 모든 세션)이 대기 유형이 PAGELATCH_EX 인 시퀀스 개체에서 다음 값을 가져 오려는 세션에 의해 차단되는 것을 보았습니다. 다른 700 개 이상의 세션은 LATCH_EX에서 기다리고있었습니다.
대기 리소스를 살펴보면 sys.sysobjvalues를 참조했습니다.
왜 이런 일이 일어나고 다른 사람들이 이것을 보았는지 궁금합니다. 우리는 최근에이 시퀀스의 CACHE 값을 DEFAULT (50)에서 200으로 변경했습니다.이 시퀀스를 너무 많이 사용하는 경우 시퀀스 호출 성능이 향상 될 것이라고 생각했지만 제가 틀렸을 수 있습니다.
우리는 SQL Server 2012 SP4를 사용하고 있습니다.
답변
LowlyDBA-JohnMcCall Aug 28 2020 at 20:58
다른 700 개 이상의 세션은 LATCH_EX에서 대기 중이었습니다 .... 최근이 시퀀스의 CACHE 값을 DEFAULT (50)에서 200으로 변경했습니다.
700 개의 대기 세션이있는 경우 첫 번째 생각은 작업 부하를 감안할 때 캐시가 훨씬 더 높아야한다는 것입니다. 대기가 안정되거나 감소 할 때까지 500-1000 범위에서 시도해 보는 것이 좋습니다 (계속 증가 할 수도 있음). 더 큰 캐시 값으로 찾을 수있는 최적의 지점이 있어야합니다.