증상
Microsoft SQL Server 2012 또는 Microsoft SQL Sever 2014에서 공간 데이터 형식과 연결 된 메서드를 사용 하면 sql server CLR 호스팅 계층에서 SQL Server 운영 체제 (SQLOS) 스케줄러의 퀀텀 대상을 보호할 수 있습니다. 이 보호는 선점형을 포함 하 고 있으며, SQLOS 스위치는 CPU 사용량을 증가 시킬 수 있습니다. 선점형 전환의 이유는 SQLOS 스케줄러를 보호 하는 것입니다. SQL Server CLR 기반 구현에 대 한 호출은 SQLOS 스케줄러에 양보 하거나 동작 및 동시성 패턴을 변경 하지 않고 지정 되지 않은 시간을 취할 수 있습니다. 따라서 공간 데이터 형식은 각 호출 중에 선점형 전환 하도록 디자인 되어 있습니다. 참고 공간 데이터 형식은 SQL Server CLR을 기반으로 하며, 다양 한 수준의 .NET 메모리 사용량과 스레드 전환 동작을 발생할 수 있습니다.
원인
공간 데이터 형식 메서드 실행은 일반적으로 하위 밀리초 이며 전체 SQL OS 스케줄러 및 선점형 보호가 필요 하지 않을 수 있습니다. 선점형 모드와 전환할 때의 오버 헤드는 공간 메서드 자체의 실행 보다 훨씬 더 커질 수 있습니다.
해결 방법
이 수정 프로그램에서는 공간 데이터 형식이 선점형 보호를 방지 해야 하는 SQLOS 호스팅 계층을 나타내는 추적 플래그 6531을 소개 합니다. 이렇게 하면 CPU 사용량을 줄이고 공간 활동에 대 한 전반적인 성능을 향상 시킬 수 있습니다. 개별 공간 메서드 호출 (행 및 열 당)이 ~ 4ms 보다 적게 걸리는 경우에만이 추적 플래그를 사용 합니다. 선점형 보호 없이 더 긴 호출을 하면 스케줄러 동시성 문제 및 SQLCLR punishment 메시지가 오류 로그에 기록 될 수 있습니다. 이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2012 SP2의 누적 업데이트 4 /en-us/help/3007556
SQL Server 2014 누적 업데이트 5 /en-us/help/3011055
SQL Server 2012 SP1 용 누적 업데이트 13 /en-us/help/3002044
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.