會(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ì)話、會(huì)話訪問來源和SQL語句等信息,并提供結(jié)束會(huì)話、SQL限流、SQL診斷優(yōu)化等運(yùn)維操作。
前提條件
實(shí)例為如下版本:
RDS MySQL 8.0 高可用系列或集群系列
RDS MySQL 5.7 高可用系列或集群系列
RDS MySQL 5.6 高可用系列
RDS MySQL 5.5 高可用系列
操作步驟
- 訪問RDS實(shí)例列表,在上方選擇地域,然后單擊目標(biāo)實(shí)例ID。
在左側(cè)導(dǎo)航欄中,選擇自治服務(wù) > 一鍵診斷。
單擊會(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分析:?jiǎn)螕繇撁嬗疑辖堑?b id="hdm-console.session.mysql.SessionTable.SecondsSqlAnalysis" data-tag="uicontrol" data-isbold="true" class="uicontrol">10秒SQL分析,在彈出的對(duì)話框內(nèi)查看10秒內(nèi)的SQL統(tǒng)計(jì)、慢日志及SQL概覽等信息,詳細(xì)信息請(qǐng)參見10秒SQL分析。
SQL限流:?jiǎn)螕?b id="hdm-console.components.SqlFilter.InstanceSqlFilterDialog.SqlThrottling" data-tag="uicontrol" data-isbold="true" class="uicontrol">SQL限流,在彈出的SQL限流頁面配置限流參數(shù),對(duì)符合限流條件的實(shí)例會(huì)話進(jìn)行SQL限流,詳細(xì)操作請(qǐng)參見SQL限流。
優(yōu)化:?jiǎn)螕?b id="hdm-console.monitor.slowsql.SlowlogStat.Optimization" data-tag="uicontrol" data-isbold="true" class="uicontrol">優(yōu)化,在彈出的SQL診斷優(yōu)化對(duì)話框中,查看SQL診斷結(jié)果。
若您采納診斷建議,單擊頁面右上角的復(fù)制,并將優(yōu)化后的SQL粘貼到數(shù)據(jù)庫客戶端或DMS上執(zhí)行,若不采納診斷建議,可直接單擊取消結(jié)束診斷。
說明DAS會(huì)根據(jù)SQL的復(fù)雜程度、對(duì)應(yīng)表的數(shù)據(jù)量、數(shù)據(jù)庫負(fù)載等進(jìn)行SQL診斷,診斷建議的返回時(shí)間可能會(huì)超過20秒。完成診斷后,SQL診斷引擎會(huì)給出診斷結(jié)果、優(yōu)化建議和預(yù)期優(yōu)化收益,您可以根據(jù)診斷結(jié)果確認(rèn)是否采納建議。
導(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ì)話最長(zhǎng)時(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ì)信息。
您可以單擊開啟自動(dòng)限流按鈕,開啟自動(dòng)SQL限流功能。當(dāng)數(shù)據(jù)庫實(shí)例滿足設(shè)定的限流條件時(shí)會(huì)自動(dòng)觸發(fā)SQL限流,幫助您自動(dòng)控制數(shù)據(jù)庫請(qǐng)求訪問量和SQL并發(fā)量,保障服務(wù)的可用性,詳情請(qǐng)參見自動(dòng)SQL限流。
常見問題
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”錯(cuò)誤的會(huì)話。阻塞型SQL會(huì)長(zhǎng)時(shí)間占用資源,從而導(dǎo)致其他SQL無法正常執(zhí)行。常見的阻塞型SQL包括DDL和FLUSH TABLES WITH READ LOCK等。
會(huì)話中的事務(wù)持續(xù)時(shí)間超過30s。
會(huì)話中包含長(zhǎng)時(shí)間未提交的事務(wù)。如果一個(gè)會(huì)話中開啟了事務(wù),但是超過10秒未執(zhí)行任何新的SQL,很可能是代碼中遺漏了COMMIT命令,這可能導(dǎo)致事務(wù)一直持有資源,無法及時(shí)釋放資源。
相關(guān)文檔
您可以啟用DAS的自治功能,對(duì)實(shí)例會(huì)話中的SQL進(jìn)行自動(dòng)診斷治理。