4

Java/.Net アプリをプロファイリングして、パフォーマンスのボトルネックやメモリの問題を見つける方法が気に入っています。たとえば、メソッドごとの実行時間と呼び出し回数を含む呼び出しツリーを見ると、パフォーマンスのボトルネックを見つけるのは非常に簡単です。SQL Server には、ビューに依存する他のストアド プロシージャを呼び出すストアド プロシージャがあります。これは、他のメソッドを呼び出す Java/.Net メソッドに似ています。したがって、同じ種類のプロファイラーがここで非常に役立つようです。しかし、遠くを探しても一匹も見つかりませんでした。SQL Server またはその他の DBMS 用のそのようなツールを知っている人はいますか?

更新: SQL Server プロファイラーに関するご返信ありがとうございます。ただし、このツールは非常に限られています。スクリーンショットを見てください。

4

8 に答える 8

6

SQL Nexus ツールを確認してください。これには、ボトルネックの特定に関するいくつかの優れたレポートがあります。SQL Nexus は、SQL Server のパフォーマンスの問題の根本原因を特定するのに役立つツールです。SQLDiag と PSSDiag によって収集されたパフォーマンス データを読み込んで分析します。手動でデータを分析するのに費やす時間を大幅に削減できます。

Inside SQL 2005 の書籍の 1 つ (おそらく T-SQL Querying) には、作成者が SQL プロファイラーの出力をテーブルまたは Excel ファイルにダンプし、ピボットを適用して出力を同様の形式で取得するという優れた手法がありました。スクリーンショット。

この種の分析を提供する組み込みの SQL ツールは見たことがありません。別の便利な投稿

于 2008-09-30T15:42:40.960 に答える
3

@Galwegian からのコメントに記載されているように、SQL Server プロファイラーに加えて、クエリを実行するときに実行プランもチェックしてください。

http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx
http://en.wikipedia.org/wiki/Query_plan

于 2008-09-30T15:14:56.470 に答える
2

SQL Server プロファイラーに関する別のスレッド全体:

SQL Server のパフォーマンスの問題を特定する

おっしゃっていることは理解できますが、通常、データベースの最適化はより細かいレベルで行われます。データベース アクティビティがクライアントから駆動されている場合は、既存のクライアント プロファイラーを使用して各ステップの合計時間を取得し、(データベース内にあるかどうかに関係なく) 簡単に達成できる問題に対処できるはずです。

特定のデータベース ステップを詳細にプロファイリングする必要がある場合は、プロファイラーとトレースを使用できます。

通常、データベース アクセスには特定の粒度があり、個別に対処されます。また、データベース アクティビティは、あらゆる種類のユーザー アクセスに対して直線的ではありませんが、プログラム プロファイラーは通常、直線的なコード パスをプロファイリングします。

于 2008-09-30T15:15:23.380 に答える
1

前述のように、SQL Server プロファイラーは、プログラムが SQL などに渡すパラメーターを確認するのに最適です。実行ツリーが必要な場合でも、実行ツリーは表示されません。そのためには、Show Plan を使用して、実行時に何が実行されるかを正確に確認することしか考えられません。たとえば、ビューを呼び出す sp を呼び出している場合、プロファイラーは、sp が実行されたことと、渡されたパラメーターのみを表示します。また、Windows パフォーマンス モニターには、SQL Server に固有の広範なランタイム パフォーマンス メトリックがあります。サーバー上で実行することも、リモートで接続することもできます。

于 2008-09-30T15:16:58.540 に答える
1

パフォーマンスのボトルネックを見つけるには、データベース エンジン チューニング アドバイザー (SQL Server Management Studio の [ツール] メニューにあります) を使用できます。これは、クエリを最適化するための提案を提供し、それらを自動的に最適化することを提案します (適切なインデックスの作成など)。

于 2008-09-30T15:21:54.410 に答える
0

SQLサーバープロファイラーがありますが、その名前にもかかわらず、あなたの質問の音によって、あなたが望むことをしません。データベースで行われているすべての呼び出しの詳細ビューが表示されます。一度に 1 つの sproc だけでなく、アプリ全体のトラブルシューティングに適しています

クエリ アナライザーでクエリ/spocの実行プランを表示する必要があるようです。これにより、探しているデータに似たものが得られます。

于 2008-09-30T15:16:46.343 に答える
0

プロファイリングの側面をカバーする S ql Profilerを使用することもできますが、私はそれをロギング ツールと考える傾向があります。パフォーマンスを診断するには、おそらくクエリ プランを確認する必要があります。

于 2008-09-30T15:14:11.060 に答える