すべてのプロダクト
Search
ドキュメントセンター

Database Autonomy Service:SQL エクスプローラー

最終更新日:Apr 29, 2025

Database Autonomy Service (DAS) は、[SQL エクスプローラー] 機能を提供します。SQL エクスプローラーを使用すると、SQL 文のヘルスステータスを確認し、パフォーマンスの問題をトラブルシューティングできます。このトピックでは、[SQL エクスプローラー] 機能を [SQL Explorer And Audit] モジュールで使用する手順について説明します。

前提条件

  • 管理するデータベースインスタンスが DAS に接続されており、[通常アクセス] 状態であること。

  • データベースインスタンスで SQL Explorer and Audit モジュールが有効になっていること。詳細については、「概要」トピックの SQL Explorer and Audit を有効にする セクションをご参照ください。

機能の説明

SQL エクスプローラー機能は、実行されたすべての DQL、DML、および DDL 文に関する情報を記録します。DAS はデータベースカーネルから情報を取得するため、CPU リソースの消費量はごくわずかです。

サポートされているデータベースとリージョン

詳細については、「エディションとサポートされている機能」をご参照ください。

使用上の注意

  • データベースインスタンスで SQL エクスプローラーを有効にすると、SQL エクスプローラーによって生成された分析データと統計データ (SQL の詳細は除く) は 30 日間保存できます。

  • SQL エクスプローラーによって生成された SQL 詳細の保存期間は、データベースインスタンスに対して DAS Enterprise Edition を有効にしたときに指定した保存期間と同じです。

  • SQL Explorer and Audit モジュールを無効にしても、ビジネスには影響しません。ただし、SQL Explorer and Audit によって生成されたすべてのデータは消去されます。この機能を無効にする前に、データをコンピューターにエクスポートして保存することをお勧めします。詳細については、「概要」トピックの SQL Explorer and Audit を無効にする セクションをご参照ください。

  • PolarDB-X 1.0 に接続されている ApsaraDB RDS for MySQL インスタンスで SQL 文が実行されると、シャーディングのため、ApsaraDB RDS for MySQL インスタンスに複数の SQL ログが生成されます。

  • データベースインスタンスのデータ移行中に、一時的な接続が発生する場合があります。データ移行中は、SQL エクスプローラーのデータ損失は正常です。

  • データベースインスタンスの負荷が高い場合、データ損失が発生する可能性があります。そのため、SQL エクスプローラーが増分データで収集した統計は不正確になる可能性があります。

  • SQL ログに記録される SQL 文の長さは最大 8,192 バイトです。ApsaraDB RDS for MySQL インスタンスまたは PolarDB for MySQL クラスタに記録される SQL 文の最大長を指定するパラメーターを設定できます。

    • SQL 文の最大長を 8,192 バイト以下の長さに指定した場合、指定した長さが上限として使用され、SQL 文の超過部分は記録されません。データの収集と処理中に、SQL 文にプレフィックスが追加されます。その結果、SQL ログの SQL 文の最大長は、指定した長さよりわずかに短くなります。

    • SQL 文の最大長を 8,192 バイトより大きい長さに指定した場合、上限はデフォルトで 8,192 バイトです。SQL 文の実際の長さが上限を超える場合、超過部分は記録されません。データの収集と処理中に、SQL 文にプレフィックスが追加されます。その結果、SQL ログの SQL 文の最大長は 8,192 バイトよりわずかに短くなります。

    説明
    • MySQL 5.6 または 5.7 を実行する ApsaraDB RDS for MySQL インスタンスと PolarDB for MySQL クラスタの場合、SQL 文の最大長は [loose_rds_audit_max_sql_size] パラメーターで指定されます。

    • MySQL 8.0 を実行する ApsaraDB RDS for MySQL インスタンスと PolarDB for MySQL クラスタの場合、SQL 文の最大長は [loose_rds_audit_log_event_buffer_size] パラメーターで指定されます。

  • ApsaraDB RDS for PostgreSQL インスタンスで PgBouncer が有効になっている場合、SQL エクスプローラーは PgBouncer を使用して実行された SQL 文を記録しません。

手順

  1. DAS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[インテリジェント O&M センター] > インスタンスモニター を選択します。

  3. 表示されたページで、管理するデータベースインスタンスを見つけ、インスタンス ID をクリックします。インスタンスの詳細ページが表示されます。

  4. 左側のナビゲーションウィンドウで、リクエスト分析 > SQL Explorer and Audit を選択します。表示されたページで、SQL Explorer タブをクリックします。

  5. [SQL エクスプローラー] タブで、ビジネス要件に基づいて次の機能を使用します。

    説明

    時間範囲を選択する際は、終了時刻が開始時刻より後であり、開始時刻と終了時刻の間隔が 24 時間を超えないようにしてください。データをクエリする時間範囲は、DAS Enterprise Edition が有効になった時刻より後で、SQL エクスプローラーのデータ保存期間内でなければなりません。

    • 時間範囲の表示: SQL エクスプローラーの結果をクエリする実行済み SQL 文の時間範囲を選択します。実行期間の文布実行時間実行回数 情報を、時間範囲全体にわたるすべての SQL 文について表示できます。完全なリクエスト統計 セクションで、時間範囲全体にわたるすべての SQL 文の詳細を表示し、エクスポートできます。

      説明

      最大 1,000 件の SQL ログをエクスポートできます。より広い時間範囲内でより多くの SQL ログを取得する場合は、検索 (監査) 機能を使用できます。

    • 比較リストの表示: SQL エクスプローラーの結果を比較する実行済み SQL 文の日付と時間範囲を選択します。実行期間の文布実行時間実行回数 の比較結果を、時間範囲全体にわたるすべての SQL 文について表示できます。比較リストのリクエスト セクションで、比較結果の詳細を表示できます。

    • ソース統計: アクセスソースを収集する実行済み SQL 文の時間範囲を選択します。その後、時間範囲全体にわたるすべてのリクエストソースを表示できます。

    • SQL レビュー: SQL レビュー機能は、指定された時間範囲とベースライン時間範囲内のデータベースインスタンスのワークロード分析を実行し、データベースインスタンスで実行されている SQL クエリの詳細分析を実行します。この機能は、インデックスの最適化の提案、SQL の書き換えの提案、リソース消費量の多い上位 SQL 文、新しい SQL 文、失敗した SQL 文、SQL 機能分析、実行のばらつきが大きい SQL 文、パフォーマンスが低下した SQL 文、およびデータベースインスタンスのトラフィックを最も多く生成する上位テーブルを表示します。詳細については、「SQL レビュー」をご参照ください。

    • 関連する SQL の特定: 表示するメトリックを選択し、分析 をクリックします。指定されたメトリックのパフォーマンスに最適な SQL 文を特定するには、1 ~ 5 分かかります。

    重要
    • ホットストレージとコールドストレージモードの組み合わせを使用する SQL Explorer and Audit モジュールによって 7 日以上前に生成されたデータは、コールドストレージモードで保存されます。7 日以上前に生成された SQL 詳細を分析する場合、DAS は計算と分析のためのタスクを作成します。タスクリスト をクリックして、タスクの進捗状況と履歴タスクを表示できます。

    • 7 日以上前に SQL Explorer and Audit モジュールによって生成されたデータをクエリする場合、クエリに対して従量課金制で課金されます。詳細については、「請求の詳細」をご参照ください。

説明

  • 実行期間の文布: [実行時間分布] タブでは、指定した時間範囲に基づいて、SQL クエリの実行時間の分布を表示できます。統計データは 1 分ごとに収集されます。実行時間は次の 7 つの範囲に分けられます。

    • [0,1] ms: 実行時間が 0 ms から 1 ms の範囲であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • (1,2] ms: 実行時間が 1 ms より大きく 2 ms 以下であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • (2,3] ms: 実行時間が 2 ms より大きく 3 ms 以下であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • (3,10] ms: 実行時間が 3 ms より大きく 10 ms 以下であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • (10,100] ms: 実行時間が 10 ms より大きく 100 ms 以下であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • (0.1,1]s: 実行時間が 0.1 秒より大きく 1 秒以下であることを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    • > 1s: 実行時間が 1 秒より大きいことを示します。チャートは、実行時間がこの範囲内にある SQL クエリの割合を示しています。

    説明

    実行期間の文布 タブのセクションには、インスタンスでの SQL 文の実行時間が経時的に表示されます。チャートの青い領域が大きいほど、インスタンスで SQL 文が実行されたときのインスタンスのヘルス状態は良好です。チャートのオレンジと赤の領域が大きいほど、インスタンスで SQL 文が実行されたときのインスタンスのヘルス状態は低下します。

  • 実行時間: [実行時間] タブでは、時間範囲を指定して SQL クエリの実行時間を表示できます。

  • すべてのリクエスト統計: 指定した時間範囲に基づいて、SQL 文の詳細を表示できます。詳細には、各 SQL 文の SQL テキスト、実行時間の割合、平均実行時間、および実行トレンドが含まれます。

    説明

    特定の SQL テンプレートを使用する SQL 文の実行時間の割合は、次の式に基づいて計算できます。実行時間の割合 = (SQL テンプレートを使用する SQL 文の実行時間 × SQL 文の実行回数) / (すべての SQL 文の合計実行時間 × 合計実行回数) × 100%。実行時間の割合が高いほど、データベースインスタンスはより多くの MySQL リソースを使用して対応する SQL 文を実行していることを示します。

  • SQL ID: [SQL ID] をクリックすると、対応する SQL テンプレートを使用する SQL 文のパフォーマンストレンドとサンプルデータを表示できます。

  • SQL サンプル: [SQL サンプル] タブでは、各サンプル SQL リクエストを開始したクライアントを表示できます。

    説明

    SQL サンプルのエンコードには UTF-8 文字セットが使用されます。

FAQ

Q: logout![すべてのリクエスト統計] セクションの [SQL エクスプローラー] タブにある 文は何を示していますか?

A: logout! 文は、切断を示します。logout! 文の実行時間は、最後のインタラクション時間と切断が発生した時間との差です。時間の差の間、接続はアイドル状態のままです。[ステータス] 列に表示される 1158 コードは、次の理由によって発生する可能性のあるネットワーク切断を示します。

  • クライアント接続がタイムアウトしました。

  • サーバーが切断されました。

  • 接続の期間が interactive_timeout または wait_timeout パラメーターで指定された値を超えると、サーバーへの接続がリセットされます。

Q: %アクセス ソースソース統計[SQL エクスプローラー] タブの タブの 列にパーセント記号 () が表示されるのはなぜですか?

A: ストアドプロシージャを使用すると、[SQL エクスプローラー] タブの [ソース統計] タブの [アクセスソース] 列にパーセント記号 (%) が表示される場合があります。次の操作を実行して、この状況を再現できます。

説明

この例では、データベースインスタンスは ApsaraDB RDS for MySQL インスタンス、テストアカウントは test_user、テストデータベースは testdb です。

  1. ApsaraDB RDS コンソールで、データベースと標準アカウントを作成し、データベースに対する権限を標準アカウントに付与します。詳細については、「アカウントとデータベースを作成する」をご参照ください。

  2. CLI を使用して、test_user アカウントを使用してデータベースインスタンスに接続します。詳細については、「データベースクライアントまたは CLI を使用して ApsaraDB RDS for MySQL インスタンスに接続する」をご参照ください。

  3. testdb データベースに切り替え、次の文を実行してストアドプロシージャを作成します。

    -- testdb データベースに切り替えます。
    USE testdb;
    
    -- ストアドプロシージャを作成します。
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `das` $$
    CREATE DEFINER=`test_user`@`%` PROCEDURE `das`()
    BEGIN
    SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID();
    END $$
    DELIMITER;
    /* testdb データベースに切り替えます。 */
    /* ストアドプロシージャを作成します。 */
  4. 特権アカウントを使用してデータベースインスタンスに接続します。詳細については、「データベースクライアントまたは CLI を使用して ApsaraDB RDS for MySQL インスタンスに接続する」をご参照ください。

  5. 作成したストアドプロシージャを呼び出します。

    -- testdb データベースに切り替えます。
    USE testdb;
    
    -- ストアドプロシージャを呼び出します。
    CALL das();
    /* testdb データベースに切り替えます。 */
    /* ストアドプロシージャを呼び出します。 */

Q: ログセクションに表示されるデータベース名が SQL 文のデータベース名と一致しないのはなぜですか?

A: ログセクションに表示されるデータベース名はセッションから取得されますが、SQL 文のデータベース名はユーザーによって指定され、クロスデータベースクエリや動的 SQL など、ユーザーの入力またはクエリ設計によって異なります。そのため、SQL 文とログセクションに表示されるデータベース名に不一致が生じます。

Q: SQL Explorer and Audit 機能はデータベースのパフォーマンスに影響しますか? 影響はどの程度ですか?

A: はい、SQL Explorer and Audit 機能はデータベースのパフォーマンスに影響しますが、影響は軽微であり、ほとんど気づかない程度です。

リソース消費への影響について、以下に説明します。

  • CPU とメモリ: CPU とメモリの消費量は非常に少なく、ほとんど無視できます。

  • ストレージ容量: 監査データは DAS に保存されるため、SQL Explorer and Audit はデータベースインスタンスのストレージ容量に影響しません。

  • ネットワーク: SQL Explorer and Audit はネットワークのパフォーマンスに影響しません。

  • ディスクパフォーマンス: 監査データはデータベースインスタンスのディスクではなく DAS に保存されるため、SQL Explorer and Audit はディスクのパフォーマンスに影響しません。

Q: キャプチャされた SQL 文が不完全なのはなぜですか? 完全な SQL 文を表示するにはどうすればよいですか?

A: 実行された SQL 文が長すぎます。SQL エクスプローラーで、対応するスレッド ID またはトランザクション ID で検索して詳細を表示します。

関連 API 操作

操作

説明

GetErrorRequestSample

データベースインスタンスの SQL エクスプローラーデータで、失敗した SQL クエリに関する情報を非同期的にクエリします。特定の時間範囲内で最大 20 件の失敗した SQL クエリをクエリできます。

GetAsyncErrorRequestStatResult

データベースインスタンスの SQL エクスプローラーデータで、SQL テンプレートの失敗した実行回数を非同期的にクエリします。

GetAsyncErrorRequestListByCode

データベースインスタンスの SQL エクスプローラーデータで、MySQL エラーコードを生成する SQL 文の ID を非同期的にクエリします。

GetAsyncErrorRequestStatByCode

データベースインスタンスの SQL エクスプローラーデータで、MySQL エラーコードと各エラーコードに対応する SQL クエリの数 を非同期的にクエリします。

GetFullRequestOriginStatByInstanceId

データベースインスタンスの SQL エクスプローラーデータで、アクセスソース別にすべてのリクエスト統計をクエリします。

GetFullRequestStatResultByInstanceId

データベースインスタンスの SQL エクスプローラーデータで、SQL ID 別にすべてのリクエスト統計を非同期的にクエリします。

GetFullRequestSampleByInstanceId

データベースインスタンスの SQL エクスプローラーデータで、SQL ID 別にサンプル SQL 文をクエリします。最大 20 件のサンプル SQL 文をクエリできます。

GetDasSQLLogHotData

過去 7 日間にデータベースインスタンスに対して SQL Explorer and Audit モジュールが生成したホットストレージデータの詳細をクエリします。

ベストプラクティス

低速クエリのトラブルシューティング