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

ApsaraDB RDS:セッション管理機能の使用

最終更新日:Jan 18, 2024

データベースでパフォーマンスの問題または操作の例外が発生した場合、データベースのセッション情報に基づいて問題または例外をトラブルシューティングできます。 Database Autonomy Service (DAS) は、ApsaraDB RDS for MySQLインスタンスのセッション管理機能を提供します。 この機能を使用すると、データベースインスタンスに関するアクティブセッション、異常セッション、アクセスソース、SQLステートメントなどの情報をリアルタイムで表示できます。 また、データベースインスタンスでセッションの終了、SQLスロットリング、SQL診断、SQL最適化などのO&M操作を実行することもできます。

前提条件

RDSインスタンスは、次のMySQLバージョンとRDSエディションのいずれかを実行します。

  • RDS High-availability Edition、RDS Enterprise EditionRDS Cluster EditionのMySQL 8.0

  • RDS High-availability Edition、RDS Enterprise EditionRDS Cluster EditionのMySQL 5.7

  • RDS High-availability EditionのMySQL 5.6

  • RDS High-availability EditionのMySQL 5.5

手順

  1. [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
  2. 左側のナビゲーションウィンドウで、自律型サービス (CloudDBA) > ワンクリック診断 を選択します。

  3. セッション管理 タブをクリックします。

  4. セッション管理 タブで、データベースインスタンスに関するセッション情報を インスタンスのセッション および セッション統計 セクションに表示します。

    • インスタンスのセッション セクションでは、次の操作を実行できます。

      • 例外、アクティブセッション、最長実行時間、CPU使用率、接続使用率などの情報を表示します。

      • セクションの右上隅にある10 秒 SQL 分析をクリックします。 表示されるダイアログボックスで、SQL統計、低速クエリログ、SQLの概要など、10秒の時間ウィンドウ内に実行されるSQL文に関する情報を表示します。 詳細については、「10秒のSQL分析」をご参照ください。

      • SQL スロットリング をクリックします。 SQL スロットリング ダイアログボックスで、セッションのしきい値ベースのSQLスロットリングを有効にするパラメーターを設定します。 詳細については、「SQLスロットリング」をご参照ください。

      • 最適化 をクリックします。 SQL 診断の最適化 ダイアログボックスで、SQL診断の結果を表示します。

        SQL最適化の提案を受け入れた場合は、コピー をクリックし、最適化されたSQL文をデータベースクライアントまたはデータ管理 (DMS) に貼り付けて実行します。 SQL最適化の提案を受け入れない場合は、Cancel をクリックします。

        説明

        DASは、SQL文の複雑さのレベル、テーブル内のデータ量、およびデータベースの負荷に基づいてSQL診断を実行します。 SQL診断が実行されてから20秒以上後に提案が返されることがあります。 診断が完了すると、SQL診断エンジンは診断結果、最適化の提案、および期待される最適化の利点を提供します。 提供された情報に基づいて、提案を受け入れるかどうかを決定できます。

      • アクティブなセッションをエクスポートします。

      • セッションを終了します。

        セッションを終了するときは、セッションの確立に使用するデータベースアカウントのユーザー名とパスワードを入力する必要があります。 他のデータベースアカウントによって確立されたセッションを終了する権限を持つデータベースアカウントを使用することもできます。 たとえば、特権アカウントを使用できます。

        説明
        • セッションリストの [ユーザー] 列に、セッションの確立に使用されるデータベースアカウントを表示できます。

        • [セッション履歴の終了] をクリックすると、終了したセッションのレコードを表示できます。

    • セッション統計 セクションでは、次の操作を実行できます。

      • ユーザー、アクセスソース、またはデータベースごとに概要情報とセッション統計を表示します。 サマリ情報は、セッションの総数、実行中のセッションの総数、および最長セッション期間を含む。

      • ユーザー、アクセスソース、またはデータベースごとにサマリー情報とセッション統計をエクスポートします。

    • [自動スロットルの有効化] をクリックして、自動SQLスロットリング機能を有効にします。 この機能を有効にし、その機能に設定した条件が満たされると、自動SQLスロットリングがトリガーされ、データベースインスタンスでのアクセス要求数と同時SQL要求数が管理されます。 これにより、データベースサービスの可用性を確保できます。 詳細については、「自動SQLスロットリング」をご参照ください。

よくある質問

[アクセスソース] 列にパーセント記号 (%) が表示されるのはなぜですか。

ストアドプロシージャを使用すると、[アクセスソース] 列にパーセント記号 (%) が表示される場合があります。 このシナリオを再現するには、次の手順を実行します。

説明

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

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

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

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

    -- testdbデータベースに切り替えます。
    使用testdb;
    
    -- ストアドプロシージャを作成します。
    DELIMITER $$
    終了した場合のドロップ手順「das」 $$
    CREATE DEFINER='test_user' @ '%' PROCEDURE 'das'()
    開始
    SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID();
    END $$
    DELIMITER; 
  4. 特権アカウントを使用してデータベースインスタンスに接続します。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。

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

    -- testdbデータベースに切り替えます。
    使用testdb;
    
    -- ストアドプロシージャを呼び出します。
    CALL das();
    
    -------- --------- ---------- ------------------------------------------------------ ------------------------------------------------------------------------- +
    | ID | ユーザー | ホスト | DB | コマンド | 時間 | 州 | 情報 |
    -------- --------- ---------- ------------------------------------------------------ ------------------------------------------------------------------------- +
    | 487818 | test_user | %:2065 | testdb | クエリ | 0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() |
    -------- ---------- --------- -------- ------------------------------------------- ------------------------------------------------------------------------- + 

Q: 異常としてマークされているセッションは何ですか?

A: 次のセッションは異常としてマークされます。

  • "Waiting for table metadata lock" エラーを報告するセッションなど、ブロッキングSQL文を含むセッション。 ブロッキングSQL文の実行時間が30秒を超えています。 ブロッキングSQL文は、長期間リソースを占有します。 その結果、他のSQL文の実行に失敗する可能性があります。 一般的なブロッキングSQLステートメントには、DDLステートメントとFLUSH TABLES WITH READ LOCKステートメントがあります。

  • 30秒を超えるトランザクションを含むセッション。

  • 長期間コミットされていないトランザクションを含むセッション。 トランザクションがセッションで開始され、新しいSQL文が10秒を超えて実行されない場合、COMMITコマンドがコードから省略される可能性があります。 これにより、トランザクションが長期間にわたってリソースを占有し、適時にリソースを解放することができなくなる可能性がある。

参考情報

DASの自律機能を有効にできます。 DASは、データベースインスタンスのセッション内のSQL文を自動的に診断および最適化できます。