내가 말할 수있는 것에서 95 % 미만의 프로 시저 캐시 적중률은 문제입니다. 내 상자에는 값이 85에서 95 %로 올라갑니다.
이 문제를 어떻게 해결합니까? 서버에 충분한 RAM이있는 것 같으므로 문제가되지 않습니다. 다른 무엇을 할 수 있습니까?
내가 말할 수있는 것에서 95 % 미만의 프로 시저 캐시 적중률은 문제입니다. 내 상자에는 값이 85에서 95 %로 올라갑니다.
이 문제를 어떻게 해결합니까? 서버에 충분한 RAM이있는 것 같으므로 문제가되지 않습니다. 다른 무엇을 할 수 있습니까?
답변:
스프레드 시트에서 중요한 데이터 요소를 요약하고 정리해 보겠습니다.
Total Use Count 1
--------------------------------------- -----------------------
Total Plans Total MBs Avg Use Count Total Plans Total MBs
----------- --------- ------------- ----------- ---------
Adhoc 55,987 3,054 3 38,314 2,036
Proc 709 1,502 1,549 135 527
따라서 첫 번째 행은 계획 캐시의 약 2/3를 차지하는 나쁜 것들을 보여줍니다 (몇 가지 사소한 예외는 있지만 대부분 한 번만 사용되는 것). 최대한 많은 것을 제거하고 제거해야합니다. 두 번째 줄은 좋은 것들을 보여줍니다. 이들은 계획 캐시에서 원하는 것입니다 (다량의 재사용 계획). 나머지 데이터는 크게 관련이 없습니다. 그러나 한 가지 다른 점은 액세스가 저장 프로 시저를 통해서만 이루어진다 고 말하지만 해당 프로 시저가 동적 SQL을 사용하는 경우 해당 명령문은 AdHoc
계획이 아닌 Proc
계획 으로 캐시됩니다 .
2008 년 이상에, 나는 켜고 optimize for ad hoc workloads
다음 문제로 넘어가 겠다고 말할 것입니다. 이것은 단일 사용 계획이 현재 사용하지 않는 MB의 양을 차지할 것입니다. 불행하게도, 2005 년, 당신의 선택은 매우 사용 문 수준에 그 저장 프로 시저 리팩토링을 제외하고, 제한됩니다 OPTION (RECOMPILE)
및 / 이하 / 아니오 동적 SQL을, 또는 켜기 데이터베이스 수준에서 강제 매개 변수화 중 더 나은 계획 재사용을 얻기 위해 시도 - 계획 일치를 위해 리터럴을 매개 변수로 처리하여 유사한 쿼리 나는 계획 안내서가 소심하지 않기 때문에 주저하고 언급합니다.이 답변에서 나중에 논의 할 때-계획 캐시가 확실히 당신의 성과의 원천이라는 것을 알지 못한다면 그 길을 갈 가치가 있는지 확신하지 못합니다 발행물.
나는에 대해 질문 @@VERSION
SP2 이전 계획 캐시에 할당 할 수있는 메모리의 양에 대한 알고리즘은 상대적으로 loosey - 거위이었다 때문이다. SP2의로 그들은 꽤 저를 강화 (변경은 문서화에 설명 이 게시물 과 이 게시물 ). 귀하의 경우 계획 캐시가 상대적으로 가득 차서 캐시 누락이 발생하는 것은 놀라운 일이 아닙니다. 26GB = 5.8GB의 상한; 스프레드 시트에 ~ 4.5GB가 표시되지만 여기서 알지 못하는 계산 또는 구성 차이가있을 수 있습니다.
이 MSDN 기사optimize for ad hoc workloads
는 2008 년에 추가 된 서버 설정에 대해 설명하고 캐시에 더 많은 메모리를 할당 할 수있는 추적 플래그 8032에 대해 언급합니다 (아마도이 설정을 서버 수준에서 설정하지 않은 경우). 우리의 고객, 또는 적어도 더 이상 2005 년에 있지 않은 99 %). 이 추적 플래그는 2005 SP3 또는 SP4에서 테스트 한 적이 없으며 솔직히 언제 도입되었는지 확실하지 않습니다. 캐시에 할당 된 RAM이 % % 더 있어도 여전히 문제를 해결하고 캐시 미스가 많은 것으로 생각하기 때문에 문제가 해결되는지 또는 단순히 변경하는지 알지 못합니다. 저장 프로 시저
또는 계획 캐시와 직접 관련된 문제를 해결해야 할 경우도 있습니다. 캐시 적중률이 예상보다 높지 않다고해서 문제가 발생한 것은 아니며, 100 % 캐시 적중률에서도 마찬가지입니다. 요금제 중 일부는 일회용이며 특별합니다. 사용자는 여전히 다른 문제로 인해 성능 문제로 어려움을 겪을 수 있습니다.
내 제안은 계획 캐시 적중률보다 더 나은 흡연 총을 찾는 것입니다. 사용자의 성능 불만에 대한 자세한 정보를 얻으십시오. 모든 쿼리가 항상 느립니까? 특정 질문이 있습니까? 특정 시간 / 주 / 비즈니스주기는? 보고 쿼리 만 느리나요? SQL Server 모범 사례 , 특히 대기 및 대기열 섹션 에서이 건조하고 긴 문서를주의 깊게 읽어 성능 문제를 식별, 진단 및 해결하기위한 논리적 접근 방식을 구성 할 수 있습니다. 대시 보드의 일부 숫자를 더 잘 보이게 만드는 것-직접 알지 못하는 숫자-문제에 직접 기여하는 숫자-매우 만족 스러울 수 있지만 사용자의 성능 문제를 해결하지 못하면 실제로 얻지 못했습니다. 어딘가에.
컴파일 / 재 컴파일을 읽고 캐시 재사용을 계획하는 데 유용 할 수도 있습니다. 이 중 일부는 2008 년 (특히 임시 작업 설정에 관한 정보)에 중점을두고 있지만 2005 년에는 여전히 많은 정보가 유용하며 업그레이드의 이점 (힌트, 힌트)을 더 잘 이해하는 데 도움이됩니다.