ホームページ > データベース > mysql チュートリアル > パラメーター スニッフィングはストアド プロシージャのパフォーマンスにどのような影響を与えますか?また、それを軽減するにはどうすればよいですか?

パラメーター スニッフィングはストアド プロシージャのパフォーマンスにどのような影響を与えますか?また、それを軽減するにはどうすればよいですか?

DDD
リリース: 2024-12-22 22:11:15
オリジナル
729 人が閲覧しました

How Does Parameter Sniffing Impact Stored Procedure Performance, and How Can It Be Mitigated?

ストアド プロシージャのパフォーマンスに対するパラメーター スニッフィングの影響

日付パラメーター (@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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート