0

関数のパフォーマンスを測定する方法があるかどうか知りたかったのです。部分的に。

関数を完了するのにかかる合計時間を測定できることは知っていますが、関数内の個々のクエリを測定する方法はありますか?

関数のパフォーマンスのボトルネックが見つからないため、知りたかっただけです。

4

1 に答える 1

1

推定された実行計画と実際の実行計画の間に大きな違いが見られる場合、ほとんどの場合、統計が (これまでに) 更新されていないことが原因です。したがって、SQL Server は、どのテーブルのデータが少ないか、どのテーブルが巨大かなどを認識できず、偽の計画 (見積もりと実際の両方) を生成したり、見積もり計画のコストを誤って計算したりする可能性が高くなります。実際の計画は、計画の実際の正確なコストに基づいていますが、計画が最適なものからかけ離れている場合、この精度はボトルネックを特定するのにほとんど価値がありません。

これを修正するには、UPDATE STATISTICSステートメントを発行するか、sp_updatestatsプロシージャーを実行します。

関数の 100% の実際値が表示されるのは、最新の統計があるかどうかに関係なく、データベースが空またはほとんど空であることが原因である可能性があります。

パフォーマンスを最適化するときは、データベースに大量のデータがほぼ現実的に取り込まれていることを確認してください (各テーブルには、本番環境で予想されるよりも 2 倍のレコードを配置しますが、予想される大まかな比率を維持してください)。空のデータベース、または完全に過度に過負荷になったデータベースを使用してパフォーマンスのボトルネックを探しても、あまり意味がありません。クエリ プランは異なり、プランがたまたま同じものであったとしても、ボトルネックは本番以外の場所にある可能性があります。

于 2012-08-01T22:21:55.743 に答える