Service Broker를 적절히 사용하고 최대 성능을 발휘하는지 여부를 확인하려고합니다. 우리는 SB 대화 및 처리를 조정하여 3000/분에서 8000/분으로 갔지만 CPU는 100 %로 일정하게 유지되었습니다. 또한 SB 대기열은 며칠 동안 비어 있지만 유사한 트래픽 일에 대기열은 500k까지 백업 할 수 있습니다.SQL Server Service Broker : 오버 헤드 또는 최대 성능을 확인하는 방법?
기계는 쿼드 쿼드 (16 코어), HT, 32GB RAM 및 AWB를 사용할 수있는 SQL Server에 할당 된 26GB입니다.
SQL Server 2008 SP1 (CUs 없음), Enterprise Edition. Windows NT 6.1 (빌드 7600 :)에서 Microsoft Corporation Enterprise Edition (64 비트)
(영문) Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) 2009 년 3 월 29 일 10:11:52메시지는 서비스 브로커 큐에 삽입됩니다. 서비스 대기열 큐는 메시지 그룹을 가져 와서 XML을 구문 분석하고 (단순한 구문 분석이 아닌) 테이블에 삽입하는 CLR을 통해 메시지 그룹을 실행합니다. CLR은 T-SQL 코드보다 상당히 빠릅니다.
우리는 스케줄러
우리는 야간 통계/인덱스 유지 관리를 실행 당 35 개 실행 가능한 작업의 평균 있습니다.
성능을 높이기 위해 서버 MAXDOP = 1을 설정했습니다.
우리는 TEAMDB 파일 수를 64로 늘려서 SGAM 경합을 피했습니다. TF1118과 결합하면 TEMPDB 경합이 중지 된 것 같습니다.
sys.dm_os_waiting_tasks를 보면 일반적으로 ~ 60 개의 태스크가 THREADPOOL에서 대기하고 있으며 다른 유형은 소수에 불과합니다.
신호 대기 시간은 70 % (리소스 대기 = 30 %)입니다.
TokenAndUserPermCache가 20MB 미만인 것으로 확인되었습니다.
sys.dm_os_latch_stats를 보면 40 분의 1 분 안에 BUFFER 래치가 표시되는데, 대부분 sysdesend에 있으며 우리는 Dialogs를 처리하는 데 사용하는 사용자 테이블에 있습니다.
CPU 압력을 나타내는 SOS_SCHEDULER_WAIT도 높습니다. 그러나 CLR이 너무 바쁘거나 Service Broker 오버 헤드로 인해 발생 했습니까? 기꺼이 코드를 제공하겠습니다. 여기에 게시 할 내용을 알려주십시오.
미리 감사드립니다.
이것을 serverfault.com에 다시 게시하는 것이 좋습니다. 관리자 용 사이트입니다. 여전히 여기에 답을 얻을 수 있지만 StackOverflow는 일반적으로 (SQL 쿼리와 같은) 코딩 측면에서 더욱 중요합니다. – JNK