저장 프로시저 성능에 대한 매개변수 스니핑의 영향
날짜 매개변수(@MyDate)를 활용하는 저장 프로시저는 다음을 기준으로 상당한 성능 불일치를 나타냅니다. 컴파일 중 매개변수의 초기값입니다. @MyDate가 처음에 NULL로 전달되면 실제 입력 값에 관계없이 이후 프로시저 실행 시 성능이 저하됩니다. 그러나 컴파일하는 동안 날짜 또는 현재 날짜로 @MyDate를 초기화하면 이후의 모든 호출에 대해 최적의 성능이 보장됩니다.
이 동작은 저장하는 동안 쿼리 매개변수의 값을 평가하는 SQL Server의 매개변수 스니핑 메커니즘에 기인할 수 있습니다. 절차 컴파일. 이 경우 @MyDate가 처음에 NULL이면 최적화 프로그램은 나중에 @MyDate에 NULL이 아닌 값이 포함되어 있어도 지속되는 비효율적인 실행 계획을 생성합니다.
이 문제를 해결하려면 다음 복사본을 사용하여 매개 변수 스니핑을 비활성화하세요. @MyDate 매개변수(@MyDate_Copy). 이렇게 하면 SQL Server가 런타임 시 @MyDate의 현재 값을 기반으로 쿼리 계획을 최적화하여 초기 매개변수 값의 영향을 제거합니다.
SQL Server 2005에서 매개변수 스니핑은 심각한 버그를 나타내는 것으로 알려져 있습니다. 성능 병목 현상이 발생하고 쿼리가 완료되지 않을 수도 있습니다. 따라서 이러한 문제를 방지하려면 저장 프로시저 매개변수를 마스크하는 것이 좋습니다. SQL Server 2008은 매개변수 스니핑 관련 성능 문제를 해결하는 데 사용할 수 있는 OPTIMIZE FOR UNKNOWN 절을 제공합니다.
위 내용은 매개 변수 스니핑은 저장 프로시저 성능에 어떤 영향을 미치며 어떻게 완화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!