全部產品
Search
文件中心

Database Autonomy Service:執行個體會話

更新時間:Jul 27, 2024

當資料庫出現效能問題或異常操作時,通常需要結合資料庫的會話資訊,快速定位和解決資料庫的問題。資料庫自治服務DAS(Database Autonomy Service)的執行個體會話功能,支援即時查看目標執行個體的會話資訊,並提供會話營運操作,例如結束會話、10秒SQL分析、SQL限流以及最佳化等。

前提條件

目標資料庫執行個體已接入DAS,並且接入狀態顯示為接入正常

說明

當前不支援RDS SQL Server資料庫執行個體。

操作步驟

本文以RDS MySQL為例介紹如何使用執行個體會話功能。

  1. 登入DAS控制台

  2. 在左側導覽列中,單擊執行個體監控

  3. 找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。

  4. 在左側導覽列,單擊執行個體會話

  5. 會話管理頁面,可以查看目標執行個體當前的執行個體會話會話統計等詳細資料。

    • 您可以在執行個體會話地區進行如下操作:

      • 查看執行個體會話資訊:可以查看異常、活躍會話、最大執行時間、CPU使用率和串連使用率等資訊。

      • 10秒SQL分析:單擊頁面右上方的10秒SQL分析,在彈出的對話方塊內查看10秒內的SQL統計、慢日誌及SQL概覽等資訊,詳細資料請參見10秒SQL分析

      • SQL限流:單擊SQL限流,在彈出的SQL限流頁面配置限流參數,對符合限流條件的執行個體會話進行SQL限流,詳細操作請參見SQL限流

      • 最佳化:單擊最佳化,對目標執行個體會話進行最佳化,詳細操作請參見SQL最佳化

      • 匯出活躍會話。

      • 結束會話。

        結束會話時,需要輸入建立該會話的資料庫帳號和密碼。您也可以使用更高許可權的資料庫帳號(具有結束其他帳號建立的會話的許可權),例如高許可權帳號

        說明
        • 在會話列表的使用者列,可以查看建立目標會話的資料庫帳號。

        • 單擊結束會話記錄,查看結束會話的記錄。

    • 您可以在會話統計地區進行如下操作:

      • 查看會話統計資訊:可以查看會話概要(如會話總數、運行中會話總數和運行中會話最長時間),查看按使用者、按訪問來源和按資料庫等條件統計的會話總數及活躍數。

      • 匯出會話統計資訊:可以按概要、按使用者統計、按訪問來源統計和按資料庫統計等條件匯出會話統計資訊。

常見問題

Q:為什麼會出現%訪問來源

A:該情況可能在您使用預存程序時出現。按如下樣本可以複現這種情況:

說明

樣本中資料庫執行個體為RDS MySQL,測試帳號為test_user,測試資料庫為testdb。

  1. 在RDS控制台建立普通許可權帳號及其授權的資料庫,詳細操作請參見建立資料庫和帳號

  2. 使用測試帳號通過命令列方式串連資料庫執行個體,詳細操作請參見通過用戶端、命令列串連RDS MySQL執行個體

  3. 切換到測試資料庫,並建立如下預存程序。

    -- 切換到測試資料庫
    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;
  4. 使用高許可權帳號串連資料庫執行個體,詳細操作請參見通過用戶端、命令列串連RDS MySQL執行個體

  5. 調用預存程序。

    -- 切換到測試資料庫
    USE testdb;
    
    -- 調用預存程序
    CALL das();
    
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | ID     | USER      | HOST   | DB     | COMMAND | TIME | STATE     | INFO                                                                    |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | 487818 | test_user | %:2065 | testdb | Query   |    0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+

Q:對於RDS MySQLPolarDB MySQL版執行個體,哪些會話會被標記為異常

A:如下的會話會被標記為異常:

  • 會話包含阻塞型SQL(執行時間超過30秒的SQL),例如報“Waiting for table metadata lock”的會話。阻塞型SQL會長時間佔用資源,從而導致其他SQL無法正常執行。常見的阻塞型SQL,如:FLUSH TABLES WITH READ LOCK,懸掛事務導致DDL語句等待中繼資料鎖等。

  • 會話中的事務期間超過30s。

  • 會話中包含長時間未提交的事務。如果一個會話中開啟了事務,但是超過10秒未執行任何新的SQL,很可能是代碼中遺漏了COMMIT命令,這可能導致事務一直持有資源,無法及時釋放資源。