スロークエリの詳細の確認

Slow Queries 詳細セクションは、New Relic APM の Databases ページの一部です。Slow Queriesセクションでは、トランザクションがクエリおよびクエリのトレースに消費した時間を示します。スロークエリが記録されている場合は、データベースページの下部に Slow Queries セクションに表示されます。Slow Queries テーブルの項目を選択すると、Databases ページのチャートセクションで詳細セクションがモーダルとしてポップアップします。

エージェントは、トランザクショントレースの実行計画の閾値を超えた全クエリをキャプチャします。エージェントは、一緒に同じようなクエリ文を集約します。その中で最もパフォーマンスの悪いクエリの詳細だけ保持します。毎分、エージェントは New Relic のサービスにサンプル抽出したデータを送信します。これらは、その分の間に最もパフォーマンスが悪かったクエリとなります。

Slow SQL 機能の利用可否はお使いのサブスクリプションレベルに依存します。

Slow Queries ページの表示

Slow Queries は、サイトのデータベースクエリの中でパフォーマンスが遅いものを抽出します。データベースのパフォーマンス問題を修正する必要がある状況と診断情報も一緒に収集します。Slow Queries は、Databases ページ に含まれます。スロークエリが記録されていれば、Databases ページの下部に Slow Queries セクションが表示されます。

スロークエリ上で情報を表示する手順は以下のとおりです。

  1. New Relic のメニューバーから、APM > (選択したアプリ) > Monitoring > Databases を選択します。
  2. Slow Queries テーブルから、任意の行を選択すると、クエリの詳細が表示されます。
スロークエリが存在しない場合は、Slow Queries テーブルは表示されません。
APM Databases - Slow query trace
APM > (選択したアプリ) > Monitoring > Databases > (選択したクエリのトランザクション): 個々のクエリの詳細ウィンドウの例です。

Slow Queries のメトリクス

Slow Queries 一覧には以下の情報があります。

メトリック 説明
レスポンスタイム サンプル抽出された文の平均応答時間。
サンプル数 サンプルでスロークエリとして特定されたクエリの数。

Slow Queries テーブルから行を選択すると、スロークエリの詳細を表示します。

メトリック 説明
開始時間 スタックトレースが、表示されているデータを収集し始めた時間。
最大時間 サンプル内の似たクエリ文すべての中の最大時間。
アクション クエリを呼び出したアクションまたは処理。
クエリ スロークエリとしてレポートされたクエリ文。設定により一部を難読化できます。
スタックトレース クエリ文が呼び出されたコードの箇所。

New Relic は可能な限り 実行計画 を収集します。MySQL を使っているアプリには、query analysis [クエリ解析]を提供しています。これにより、クエリで起こっていることや、速度改善にすべきことがわかります。MySQL 以外のデータベースでは実行計画を表示します。

クエリの難読化設定

クエリの難読化のレベルを定義する方法は以下のとおりです。

  1. New Relic メニューバーから、APM > (選択したアプリ) > Settings > Application を選択します。
  2. Show advanced settings [高度な設定を表示]を選択します。
  3. Transaction tracing 設定にあるスロークエリ用の設定を選択する。

PHP エージェントを使っている場合は、slow_sql 設定を使ってください。

Java エージェントを使っており、かつ、ハイセキュリティモードを使っている場合は、slow_query_whitelist 設定をご覧ください。

スロークエリのトラブルシューティング

New Relic UI 上でスロークエリが見えない場合は、以下を確認してください。

チェックリスト 注意点
お使いの New Relic のアカウントは、有料のアカウントですか? スロークエリの機能は、Standard プランでは使えません。
Slow Query 機能をエージェントの設定で有効していますか?

設定をチェックします。

  1. New Relic メニューバーから、Applications > (選択したアプリ) > Settings > Application を選択します。
  2. Slow Query チェックボックスがチェックされていることを確認する。

PHP エージェントを使っている場合は、slow_sql 設定を使ってください。

Java エージェントを使っており、かつ、ハイセキュリティモードを使っている場合は、slow_query_whitelist 設定をご覧ください。

トランザクショントレースの実行計画の閾値はクエリの実行時間よりも短いですか?

閾値をチェックします。

  1. New Relic メニューバーから、Applications > (選択したアプリ) > Settings > Application を選択します。
  2. Show advanced settings を選択する。
  3. スロークエリ用の Transaction tracing 設定を確かめる。

関連情報

関連情報は以下のとおりです。