DBMS「プラグイン」またはその他のソリューションによるパフォーマンス分析

DBMS「プラグイン」またはその他のソリューションによるパフォーマンス分析

私は現在、システム レベルのパフォーマンスに重点を置いたシステム監視製品に取り組んでいます。データベース システムの監視にまで範囲を広げています。現在、接続数、ディスク IO レート、ロック待機時間など、さまざまな DBMS から簡単なパフォーマンス情報を取得できます。

しかし、DBMSに入るすべてのクエリの実行時間を測定する方法が本当に必要です。それなしクライアントがアプリケーション コードに監視を実装する必要があります。

考えられる解決策としては次のようなものがあります。

  • クライアントとサーバーの間にあるプロキシの一種です。SSL が問題になる可能性があり、さらに各 DBMS のネットワーク プロトコルをリバース エンジニアリングして実装する必要があります。
  • クエリが到着するとパフォーマンス情報を自動的に記録する各 DBMS システム用のプラグイン。

その他の問題としては、SQL を「匿名化」すること、つまり のようなものを取得しSELECT * FROM products WHERE price > 20 AND name LIKE "%disk%"て を生成することなどが挙げSELECT * FROM products WHERE price > ? AND name LIKE "%?%"られますが、これは巧妙な解析と正規表現を使用すればそれほど難しくないはずです。

私たちは主に以下のことに焦点を当てています:

  • マイグレーション
  • MSSQL
  • オラクル
  • レディス
  • モンゴDB
  • メモリキャッシュ

これらのいずれかに利用できるプラグイン スタイルのメカニズムはありますか? または、より簡単な解決策はありますか?

答え1

すべてのデータベースに適用できる汎用的なソリューションはありません。また、Oracle でクエリ応答時間を測定するのは非常に困難です。私は memcache/nosql データベースのパフォーマンス分析に取り組んだことはありません。

MySQLの場合はmysqlプロキシ- これは簡単にスクリプト化できます。ただし、必要な情報はすべてスロークエリログ(しきい値がゼロ)から取得できるでしょう。私はこのスクリプト私のクエリを「匿名化」するため。

CompuwareのClient Vantageのような(非常に高価な)ツールがあり、ネットワークトラフィックをスニッフィングし、さまざまな層(データベースを含む)でパフォーマンスメトリックを推測できます。私が知っている唯一の同等の無料ソフトウェアツールは次のとおりです。過去の月これは (私の知る限り) 永続的な TCP 接続での DB 応答時間を測定するのに必要な詳細な検査を提供しません。

すべてのアクセスを Web サービス経由で集中させることですべてのメトリックをキャプチャすることは可能ですが、これによりトランザクションに遅延が発生します。これは、プロキシ タイプの操作に当てはまりますが、SSL 経由の非永続的な接続の場合は特に問題になります。

これらすべてのデータをどうやって収集、維持、分析するかを検討しましたか?次の点を検討してみてください。黒鉛

どのような種類のクライアントを使用していますか? データベースを調べる前に、クライアントでの応答時間を測定する必要があります。データベースのパフォーマンスについて心配する必要があるのは、パフォーマンスの問題がある場合のみです。クライアントが Web ブラウザの場合は、はるかに簡単な作業です。Web サーバーを設定して応答時間をログに記録し、データをマッシュアップするだけです。ページ応答を測定するための簡単なボルトオンを追加することもできます。これは、認識されたパフォーマンスのはるかに優れた指標です。例:ヤフーのブーメラン

関連情報