實(shí)例會(huì)話
當(dāng)數(shù)據(jù)庫出現(xiàn)性能問題或異常操作時(shí),通常需要結(jié)合數(shù)據(jù)庫的會(huì)話信息,快速定位和解決數(shù)據(jù)庫的問題。數(shù)據(jù)庫自治服務(wù)DAS(Database Autonomy Service)的實(shí)例會(huì)話功能,支持實(shí)時(shí)查看目標(biāo)實(shí)例的會(huì)話信息,并提供會(huì)話運(yùn)維操作,例如結(jié)束會(huì)話、10秒SQL分析、SQL限流以及優(yōu)化等。
前提條件
目標(biāo)數(shù)據(jù)庫實(shí)例已接入DAS,并且接入狀態(tài)顯示為接入正常。
當(dāng)前不支持RDS SQL Server數(shù)據(jù)庫實(shí)例。
操作步驟
本文以RDS MySQL為例介紹如何使用實(shí)例會(huì)話功能。
登錄DAS控制臺(tái)。
在左側(cè)導(dǎo)航欄中,單擊實(shí)例監(jiān)控。
找到目標(biāo)實(shí)例,單擊實(shí)例ID,進(jìn)入目標(biāo)實(shí)例詳情頁。
在左側(cè)導(dǎo)航欄,單擊實(shí)例會(huì)話。
在會(huì)話管理頁面,可以查看目標(biāo)實(shí)例當(dāng)前的實(shí)例會(huì)話和會(huì)話統(tǒng)計(jì)等詳細(xì)信息。
您可以在實(shí)例會(huì)話區(qū)域進(jìn)行如下操作:
查看實(shí)例會(huì)話信息:可以查看異常、活躍會(huì)話、最大執(zhí)行時(shí)間、CPU使用率和連接使用率等信息。
10秒SQL分析:單擊頁面右上角的10秒SQL分析,在彈出的對(duì)話框內(nèi)查看10秒內(nèi)的SQL統(tǒng)計(jì)、慢日志及SQL概覽等信息,詳細(xì)信息請(qǐng)參見10秒SQL分析。
SQL限流:單擊SQL限流,在彈出的SQL限流頁面配置限流參數(shù),對(duì)符合限流條件的實(shí)例會(huì)話進(jìn)行SQL限流,詳細(xì)操作請(qǐng)參見SQL限流。
優(yōu)化:單擊優(yōu)化,對(duì)目標(biāo)實(shí)例會(huì)話進(jìn)行優(yōu)化,詳細(xì)操作請(qǐng)參見SQL優(yōu)化。
導(dǎo)出活躍會(huì)話。
結(jié)束會(huì)話。
結(jié)束會(huì)話時(shí),需要輸入建立該會(huì)話的數(shù)據(jù)庫賬號(hào)和密碼。您也可以使用更高權(quán)限的數(shù)據(jù)庫賬號(hào)(具有結(jié)束其他賬號(hào)建立的會(huì)話的權(quán)限),例如高權(quán)限賬號(hào)。
說明在會(huì)話列表的用戶列,可以查看建立目標(biāo)會(huì)話的數(shù)據(jù)庫賬號(hào)。
單擊結(jié)束會(huì)話歷史記錄,查看結(jié)束會(huì)話的歷史記錄。
您可以在會(huì)話統(tǒng)計(jì)區(qū)域進(jìn)行如下操作:
查看會(huì)話統(tǒng)計(jì)信息:可以查看會(huì)話概要(如會(huì)話總數(shù)、運(yùn)行中會(huì)話總數(shù)和運(yùn)行中會(huì)話最長時(shí)間),查看按用戶、按訪問來源和按數(shù)據(jù)庫等條件統(tǒng)計(jì)的會(huì)話總數(shù)及活躍數(shù)。
導(dǎo)出會(huì)話統(tǒng)計(jì)信息:可以按概要、按用戶統(tǒng)計(jì)、按訪問來源統(tǒng)計(jì)和按數(shù)據(jù)庫統(tǒng)計(jì)等條件導(dǎo)出會(huì)話統(tǒng)計(jì)信息。
常見問題
A:該情況可能在您使用存儲(chǔ)過程時(shí)出現(xiàn)。按如下示例可以復(fù)現(xiàn)這種情況:
示例中數(shù)據(jù)庫實(shí)例為RDS MySQL,測(cè)試賬號(hào)為test_user,測(cè)試數(shù)據(jù)庫為testdb。
在RDS控制臺(tái)創(chuàng)建普通權(quán)限賬號(hào)及其授權(quán)的數(shù)據(jù)庫,詳細(xì)操作請(qǐng)參見創(chuàng)建數(shù)據(jù)庫和賬號(hào)。
使用測(cè)試賬號(hào)通過命令行方式連接數(shù)據(jù)庫實(shí)例,詳細(xì)操作請(qǐng)參見通過客戶端、命令行連接RDS MySQL實(shí)例。
切換到測(cè)試數(shù)據(jù)庫,并創(chuàng)建如下存儲(chǔ)過程。
-- 切換到測(cè)試數(shù)據(jù)庫 USE testdb; -- 創(chuàng)建存儲(chǔ)過程 DELIMITER $$ DROP PROCEDURE IF EXISTS `das` $$ CREATE DEFINER=`test_user`@`%` PROCEDURE `das`() BEGIN SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID(); END $$ DELIMITER;
使用高權(quán)限賬號(hào)連接數(shù)據(jù)庫實(shí)例,詳細(xì)操作請(qǐng)參見通過客戶端、命令行連接RDS MySQL實(shí)例。
調(diào)用存儲(chǔ)過程。
-- 切換到測(cè)試數(shù)據(jù)庫 USE testdb; -- 調(diào)用存儲(chǔ)過程 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() | +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
A:如下的會(huì)話會(huì)被標(biāo)記為異常:
會(huì)話包含阻塞型SQL(執(zhí)行時(shí)間超過30秒的SQL),例如報(bào)“Waiting for table metadata lock”的會(huì)話。阻塞型SQL會(huì)長時(shí)間占用資源,從而導(dǎo)致其他SQL無法正常執(zhí)行。常見的阻塞型SQL,如:FLUSH TABLES WITH READ LOCK,懸掛事務(wù)導(dǎo)致DDL語句等待元數(shù)據(jù)鎖等。
會(huì)話中的事務(wù)持續(xù)時(shí)間超過30s。
會(huì)話中包含長時(shí)間未提交的事務(wù)。如果一個(gè)會(huì)話中開啟了事務(wù),但是超過10秒未執(zhí)行任何新的SQL,很可能是代碼中遺漏了COMMIT命令,這可能導(dǎo)致事務(wù)一直持有資源,無法及時(shí)釋放資源。