Azure SQL Database 使用Query Store對(duì)Azure SQL Database監(jiān)控,provide somebody with somethingAzure SQL Database 使用Query Store對(duì)Azure SQL Database監(jiān)控我們?cè)谑褂肁zure SQL Databas......
我們?cè)谑褂肁zure SQL Database的時(shí)候,需要對(duì)數(shù)據(jù)庫(kù)的性能進(jìn)行監(jiān)控,這時(shí)候就可以有兩種方法:
1.第一種方法,是通過(guò)Azure SQL Database的監(jiān)控界面,來(lái)查看數(shù)據(jù)庫(kù)的性能,在本章會(huì)簡(jiǎn)單的介紹一下
2.第二種方法,是通過(guò)Query Store來(lái)進(jìn)行監(jiān)控,在本章會(huì)詳細(xì)介紹
首先,我們介紹一下使用Azure SQL Database的監(jiān)控界面。
1.我們登錄Azure Portal: https://portal.azure.cn/
2.查看到我們使用的Azure SQL Database,選擇概述,然后點(diǎn)擊下圖紅色部分
3.頁(yè)面跳轉(zhuǎn)后,我們可以在下圖的Last Hour,設(shè)置監(jiān)控的時(shí)間段
在Add Metric里面,增加新的監(jiān)控指標(biāo),比如CPU Percentage, Data IO Percentage等
4.我們還可以在性能概述里面,查看到微軟云Azure對(duì)我們當(dāng)前數(shù)據(jù)的優(yōu)化建議
接下來(lái),我們?cè)敿?xì)介紹一下使用Query Store來(lái)進(jìn)行監(jiān)控,實(shí)際上我們?cè)谏厦婵吹降耐ㄟ^(guò)Azure Portal的可視化監(jiān)控,其實(shí)也是通過(guò)Query Store來(lái)進(jìn)行監(jiān)控的。
Query Store是SQL Server 2016里面新的功能,同時(shí)在微軟云Azure平臺(tái)上,也提供了該功能
Query Store是從內(nèi)存中讀取數(shù)據(jù),并異步寫入到Azure SQL Database的磁盤上的
這里我們假設(shè)一個(gè)場(chǎng)景,如果Azure SQL Databse的DTU利用率很高,我們?nèi)绾尾樵兂鼍唧w是哪些語(yǔ)句,占用了過(guò)多的資源呢?
1.首先,我們通過(guò)Azure Portal,查看到問(wèn)題發(fā)生的時(shí)間,如下圖在9月2日的凌晨開始,發(fā)生了該問(wèn)題
我們點(diǎn)擊下圖的紅色部分
2.DTU和CPU Time,DataIO都有關(guān)。我們點(diǎn)擊下圖的Add Metric
3.DTU是和CPU Time,Data IO疊加的因素,我們可以看到下面的CPU Time和DataIO都很高,
8點(diǎn)以后都是DATA IO
4.我們?cè)诒镜豍C上安裝SQL Server Management Studio,訪問(wèn)上面的數(shù)據(jù)庫(kù),并且找到Query Store
我們點(diǎn)擊下圖的Top Resource Consuming Queries
5.點(diǎn)擊上圖右上角的Config,設(shè)置查詢時(shí)間
6.在彈出的窗口中,選擇查詢時(shí)間,我們也可以使用默認(rèn)的
7.我們查詢CPU Time,Static 選擇Avg??梢圆榭吹饺鄙偎饕?/p>
8.在下圖,我們右鍵Miss Index,設(shè)置索引
9.如果我們需要查詢所有缺少索引的表結(jié)構(gòu),可以在SSMS執(zhí)行下面的語(yǔ)句
Search Missing Index Directly
SELECT
SUM(qrs.countexecutions) * AVG(qrs.avglogicalioreads) as estlogicalreads,
SUM(qrs.countexecutions) AS sumexecutions,
AVG(qrs.avglogicalioreads) AS avgavglogicalioreads,
SUM(qsq.countcompiles) AS sumcompiles,
(SELECT TOP 1 qsqt.querysqltext FROM sys.querystorequerytext qsqt
WHERE qsqt.querytextid = MAX(qsq.querytextid)) AS querytext,
TRYCONVERT(XML, (SELECT TOP 1 qsp2.queryplan from sys.querystoreplan qsp2
WHERE qsp2.queryid=qsq.queryid
ORDER BY qsp2.planid DESC)) AS queryplan,
qsq.queryid,
qsq.queryhash
FROM sys.querystorequery qsq
JOIN sys.querystoreplan qsp on qsq.queryid=qsp.queryid
CROSS APPLY (SELECT TRYCONVERT(XML, qsp.queryplan) AS queryplanxml) AS qpx
JOIN sys.querystoreruntimestats qrs on qsp.planid = qrs.planid
JOIN sys.querystoreruntimestatsinterval qsrsi on qrs.runtimestatsintervalid=qsrsi.runtimestatsintervalid
WHERE
qsp.queryplan like N%MissingIndexes%
and qsrsi.starttime = DATEADD(HH, 24, SYSDATETIME())
GROUP BY qsq.queryid, qsq.queryhash
ORDER BY estlogicalreads DESC
GO
10.如果我們發(fā)現(xiàn)數(shù)據(jù)庫(kù)發(fā)生死鎖,可以嘗試以下語(yǔ)句(master庫(kù))執(zhí)行查看死鎖,更多信息可參考:https://blogs.msdn.microsoft.com/azuresqldbsupport/2017/04/19/deadlockanalysisforsqlazuredatabase/
WITH CTE AS (
SELECT CAST(eventdata AS XML) AS [targetdataXML]
FROM sys.fnxetelemetryblobtargetreadfile(dl, null, null, null)
)
SELECT targetdataXML.value((/event/@timestamp)[1], DateTime2) AS Timestamp,
targetdataXML.query(/event/data[@name=xmlreport]/value/deadlock) AS deadlockxml,
targetdataXML.query(/event/data[@name=databasename]/value).value((/value)[1], nvarchar(100)) AS dbname
FROM CTE
11.當(dāng)我們需要手動(dòng)Kill死鎖的Session時(shí)候,需要注意:當(dāng)前執(zhí)行完kill 會(huì)話后,為什么執(zhí)行kill語(yǔ)句完成,但查看會(huì)話進(jìn)程還在?
在執(zhí)行kill殺會(huì)話時(shí)候,命令執(zhí)行完成并不代表會(huì)話即時(shí)被kill掉,會(huì)話中有大事務(wù)操作的話,為保證數(shù)據(jù)的一致性,未提交的事務(wù)首先要做回滾,執(zhí)行回滾時(shí)間的依據(jù)事務(wù)操作的大小。
建議:一般在Kill會(huì)話,建議采用KILL session ID WITH STATUSONLY 方式,這樣我們?cè)趉ill動(dòng)作操作結(jié)束,可以實(shí)時(shí)看到當(dāng)前處理的進(jìn)度百分比。
詳細(xì)介紹可參考:https://docs.microsoft.com/zhcn/sql/tsql/languageelements/killtransactsql view=sqlserver2017
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部