6

Jeff はポッドキャストの 1 つで、彼が常に行っていることの 1 つは、データベース呼び出しのインストルメンテーションを使用して、速度低下などの原因となっているクエリを特定できると述べていました。これは、私が過去に SQL プロファイラーを使用して測定したものですが、アプリケーションの一部としてこれを含めるために他の人がどのような戦略を使用したかに興味があります。

各データベース呼び出しにタイマーを含めて結果をログに記録するという単純なケースですか、それとも「もっときちんとした」方法がありますか? おそらく、すでにこれを行うフレームワークがあるか、同様の機能を提供するLinq-to-SQLなどで有効にできるフラグがあります。

私は主に c# を使用していますが、さまざまな言語のメソッドを確認することにも興味があり、SQL プロファイラーのような db プラットフォーム メソッドでこれを行う「コード」の方法にもっと興味があります。

4

7 に答える 7

1

クエリが 1 つのテーブルに対する単純な SELECT ではなく、MySQL または PostgreSQL を使用している場合は、常に EXPLAIN を使用してクエリを実行します。SQL Server を使用している場合、Management Studio には、本質的に同じ推定実行プランが表示されます。エンジンが各テーブルにアクセスする方法と、エンジンが使用するインデックスを確認すると便利です。時々それはあなたを驚かせるでしょう。

于 2008-08-12T12:11:23.910 に答える
1

データベース呼び出し、全体のタイミング、およびアプリケーションで返されたレコード (バイト) 数を記録することは役に立ちますが、必要なすべての情報が得られるわけではありません。

予期していなかった使用パターンが表示される場合があります。「セットベース」操作の代わりに「行ごと」アクセスを使用している場所が表示される場合があります。

使用する最適なツールは SQL プロファイラーで、「読み取り」の数と CPU および期間を分析します。高い CPU クエリ、高い読み取り、および長い期間を避けたいと考えています (当たり前!)。

「読み取りによるグループ化」は、最も厄介なクエリを最上位に表示する便利な機能です。

于 2008-08-12T13:13:32.913 に答える
0

SQL Management Studioでクエリを作成している場合は、次のように入力できますSET STATISTICS TIME ON。SQlServerは、クエリの個々の部分の解析、コンパイル、および実行にかかった時間を通知します。SqlConnectionクラスのInfoMessageイベントを処理することで、この情報をログに記録できる場合があります(ただし、SQLプロファイラーを使用する方がはるかに簡単だと思います)。

于 2008-08-12T12:27:58.137 に答える
0

ここで重要なことは、「使用しているデータベース プラットフォームは何ですか?」ということだと思います。

たとえば、Sybase では、MDA テーブルをインストールすると問題が解決する場合があります。MDA テーブルは、プロシージャ コールの使用状況から平均論理 I/O、CPU 時間、インデックス カバレッジまで、さまざまな統計を提供します。好きなだけ賢くすることができます。

于 2008-08-12T13:54:22.410 に答える
0

アプリの実行中にSQLプロファイラーを使用することの価値は間違いなくわかります.EXPLAINまたはSET STATISTICSは個々のクエリに関する情報を提供しますが、進行中のデータベースクエリに関する情報を収集するために定期的にコードに測定ポイントを挿入する人はいますか-それはたとえば、最初は問題なく実行されるテーブルに対するクエリを取り上げますが、行数が増えるにつれて、ますます遅くなります。

MySQL または Postgre を使用している場合、リアルタイムでクエリ アクティビティを確認するためのさまざまなツールがありますが、SQL プロファイラーほどクエリ パフォーマンスを経時的に測定するのに適したツールは見つかりませんでした。

ELMAHに似たものがあるか (またはあるべきか?) 、プラグインするだけで、追加の手間をかけずに情報を提供できるかどうか疑問に思っています。

于 2008-08-12T18:26:13.297 に答える
0

Hibernate を使用している場合 (私は Java バージョンを使用していますが、NHibernate にも似たようなものがあると思います)、Hibernate にさまざまなことに関する統計を収集させることができます。たとえば、次を参照してください。

http://www.javalobby.org/java/forums/t19807.html

于 2010-05-25T19:18:02.230 に答える
0

Firebird に興味がある場合は、sinatica.comをご覧になることをお勧めします。
Firebird DBA 向けのリアルタイム監視ツールを間もなくリリースします。

< /ハレンチプラグ>

于 2008-08-24T16:32:42.887 に答える