亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

5. SQL Server數據庫性能監控

2024-08-31 00:55:23
字體:
來源:轉載
供稿:網友
5. SQL Server數據庫性能監控 - 當前請求

對于在線運行的系統,當前數據庫性能監控,通常監視以下幾點:

(1) 是否有阻塞 (Blocking);

(2) 是否有等待 (Waiting),阻塞就是鎖 (Lock) 等待;

(3) 是否運行時間過長(Long running);

(4) 是否有死鎖 (Deadlock);

sys.dm_exec_query_stats之類,等一些統計性的信息,通常不作為實時告警內容,而是在性能優化時,作為參考。

. 阻塞/等待/長時間運行

1. SQL Server 2005 及以后版本檢查

SELECT r.session_id      ,r.blocking_session_id      ,DB_Name(r.database_id) as database_name      ,r.start_time      ,r.total_elapsed_time      ,r.[status]      ,CASE WHEN r.blocking_session_id <> 0 THEN 'Blocking'            WHEN r.blocking_session_id = 0 AND r.wait_type is not null THEN 'Waiting'            ELSE 'Long-running'       END as slowness_type      ,r.percent_complete      ,r.command      ,r.wait_type      ,r.wait_time      ,r.wait_resource      ,r.last_wait_type      ,r.cpu_time      ,r.reads      ,r.writes      ,r.logical_reads      ,t.[text] as executing_batch      ,SUBSTRING(t.[text],                 r.statement_start_offset/2,                 (CASE WHEN r.statement_end_offset = -1                        THEN DATALENGTH (t.[text]) --LEN(CONVERT(NVARCHAR(MAX), t.text)) * 2                  ELSE r.statement_end_offset                   END - r.statement_start_offset )/2 + 1) as executing_sql      ,bt.[text] as blocking_batch      ,SUBSTRING(bt.[text],                 br.statement_start_offset/2,                 (CASE WHEN br.statement_end_offset = -1                        THEN DATALENGTH (bt.[text]) --LEN(CONVERT(NVARCHAR(MAX), bt.text)) * 2                  ELSE br.statement_end_offset                   END - br.statement_start_offset )/2 + 1) as blocking_sql     --,p.query_plan  FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) as t CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) as p  LEFT JOIN sys.dm_exec_requests br    ON r.blocking_session_id = br.session_id OUTER APPLY sys.dm_exec_sql_text(br.session_id) as bt WHERE r.session_id > 50 and r.session_id <> @@SPID   AND r.total_elapsed_time > 30 * 60 * 1000 ORDER BY r.total_elapsed_time DESC;

以上腳本返回運行超過30分鐘的語句,需要注意的是:

(1) 如果返回執行計劃,會讓以上腳本變慢很多,可以不返回,在收到告警后檢查語句時,再去查看執行計劃;

(2) 顯示TEXT,比如: xp_cmdshell這樣的語句,start_offset, end_offset都為0,截取的 text是空白,只有看TEXT才知道是什么語句;還有就是有時需要知道這個請求來自哪個batch或者存儲過程;

(3) 有時顯示TEXT還不夠,還以xp_cmdshell為例,需要dbcc inputbuffer才能看到完整的sql語句;另外已運行結束但還沒有commit/rollback的事務,在requests中已經沒有了,也需要借用dbcc inputbuffer來查看sql 語句;

dbcc inputbuffer(@@SPID)

(4) SQL Agent作業,在這里會被一并檢查,也可以通過msdb..sysjobactivity另行檢查;

select b.name, *   from msdb..sysjobactivity a inner join msdb.dbo.sysjobs b    on a.job_id = b.job_id where b.name like '%backup%'

2. SQL Server 2000沿用過來的方法

select p.dbid, p.spid, p.blocked, p.waittime/1000.0/60.0 as wait_minutes,        ISNULL(DATEDIFF(MI, p.last_batch, GETDATE()), 0) elapsed_minutes,        p.last_batch, p.status, p.PRogram_name,        (select [text] FROM ::fn_get_sql(p.sql_handle)) sql_text   from master..sysprocesses p where spid > 50 and spid <> @@SPID   AND (status <> 'sleeping' AND ISNULL(DATEDIFF(MI, p.last_batch, GETDATE()), 0) > 30)

以上腳本返回運行超過30分鐘的語句,需要注意的是:

sysprocesses中把connection/session/request信息三者合一,其中沒有請求開始的具體時間,通過last_batch監視運行時長并不準確。測試如下:

(1) 通過ISQL連接到SQL Server,如果當前連接沒發起過任何請求,last_batch的時間為 1900-01-01 00:00:00,在此連接上發起請求時,通過last_batch計算當前請求運行時長不準確;

(2) 在SQL Analyzer/SSMS中新建查詢窗口,未發起任何查詢時,last_batch與login_time一樣,而非1900-01-01 00:00:00,通過last_batch計算當前請求運行時長不準確;或者當前窗口發起的請求已結束,但窗口/連接未關閉,則在此連接上再次發起請求,last_batch為上次請求結束的時間,通過last_batch計算當前請求運行時長也不準確;

(3) SQL Agent作業運行結束后,會把在sysprocesses的連接關閉,下次運行時重新建立連接,新建連接中last_batch等于login_time,通過last_batch計算作業運行時長準確;

作為一個老的方法,估且不再去深究,不過用sysprocesses來監視阻塞/等待還是沒有問題的,另外作業的運行時長也是可以監視的,腳本改動后如下:

select p.dbid, p.spid, p.blocked, p.waittime/1000.0/60.0 as wait_minutes,        ISNULL(DATEDIFF(MI, p.last_batch, GETDATE()), 0) elapsed_minutes,        p.last_batch, p.status, p.program_name,        (select [text] FROM ::fn_get_sql(p.sql_handle)) sql_text   from master..sysprocesses p where spid > 50 and spid <> @@SPID   and (       (p.program_name like 'SQLAgent - TSQL JobStep (Job %' AND ISNULL(DATEDIFF(MI, p.last_batch, GETDATE()), 0) > 30)       or        (p.blocked <> 0 and p.waittime/1000.0/60.0 > 30)       )

這樣一來,只剩下未被阻塞但長時間運行的sql請求未被監視到。如果一定要全面監視的話,可以選擇開啟跟蹤,進而分析跟蹤文件。

. 死鎖

死鎖的監控可以通過監視SQL Server的ERRORLOG來實現,不過需要事先打開死鎖的跟蹤標記。腳本如下:

--sql server 2000dbcc traceon(1204,-1)--sql server 2005 +dbcc traceon(1222,-1)

這樣發生死鎖時,死鎖詳細信息就會被寫入ERRORLOG,檢查deadlock或者victim關鍵字即可進行監控。

小結

各個語句的運行時長/基線并不一樣,通常不好設置統一的閥值,有時會借用第三方工具針對不同的請求設置不同的時長閥值并告警,所以在數據庫這層大多告警阻塞即可,大致步驟如下 :

(1) 部署數據庫郵件;

(2) 部署作業:定時檢查阻塞,發郵件告警。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日本在线| 九九九热精品免费视频观看网站| www日韩欧美| 91精品国产高清自在线| 成人精品在线观看| 不卡在线观看电视剧完整版| 中文字幕亚洲欧美日韩2019| 日本中文字幕不卡免费| 亚洲黄色免费三级| 亚洲精品黄网在线观看| 欧美色道久久88综合亚洲精品| 成人激情视频在线| 欧美整片在线观看| 亚洲永久免费观看| 国产福利成人在线| 日本中文字幕不卡免费| 国产精品午夜国产小视频| 81精品国产乱码久久久久久| 国产精品久久久久久久久免费看| 欧美日韩国产丝袜美女| 精品中文字幕视频| 最近2019年中文视频免费在线观看| 亚洲人精选亚洲人成在线| 国产精品一区二区性色av| 另类图片亚洲另类| 伊是香蕉大人久久| 欧美贵妇videos办公室| 黄色一区二区在线观看| 国产精品吊钟奶在线| 欧美另类高清videos| 国产精品一区二区三区免费视频| 欧美成人午夜免费视在线看片| 亚洲在线观看视频| 久久精品91久久久久久再现| 青青久久av北条麻妃海外网| 91成人在线播放| 青青在线视频一区二区三区| 亚洲国产成人久久综合一区| 8x海外华人永久免费日韩内陆视频| 成人国产精品久久久| 欧美成年人在线观看| 国产精品久久久久久久久久久久久久| 伊人久久久久久久久久久| 国产精品电影观看| 亚洲女成人图区| 国产成人涩涩涩视频在线观看| 亚洲伊人久久综合| 国产精品高清在线| 久久精品中文字幕免费mv| 久久久国产影院| 久久精品影视伊人网| 永久免费精品影视网站| 97涩涩爰在线观看亚洲| 亚洲欧美日韩一区二区三区在线| 91久久精品日日躁夜夜躁国产| 欧美老女人xx| 久久av红桃一区二区小说| 国产成人97精品免费看片| 最近中文字幕2019免费| 亚洲另类激情图| 最新国产成人av网站网址麻豆| 中文字幕日韩在线播放| 久久人人爽人人爽人人片av高请| 日韩av在线播放资源| 亚洲在线观看视频| 日韩精品一二三四区| 91精品国产综合久久香蕉的用户体验| 一级做a爰片久久毛片美女图片| 91免费精品国偷自产在线| 68精品久久久久久欧美| 成人国产精品一区二区| 国产97在线|日韩| 久久久av网站| 国产精品久久久久9999| 亚洲第一二三四五区| 美女视频黄免费的亚洲男人天堂| 欧美激情精品久久久久久变态| 国产日韩欧美另类| 欧美日韩亚洲精品内裤| 91成人在线视频| 色综合久综合久久综合久鬼88| 欧美日韩免费一区| 精品亚洲va在线va天堂资源站| 亚洲第一页中文字幕| 中文字幕免费精品一区高清| 国产精品自产拍在线观看中文| 亚洲人在线观看| 欧美片一区二区三区| 久久久久久成人精品| 日韩一区二区三区xxxx| 日韩免费电影在线观看| 色综合久综合久久综合久鬼88| 欧美激情精品久久久久久| 日韩精品中文字幕在线观看| 91久久精品国产91久久| 福利一区福利二区微拍刺激| 亚洲韩国青草视频| 91久久久久久久| 色妞色视频一区二区三区四区| 亚洲精品电影网在线观看| 美女啪啪无遮挡免费久久网站| 亚洲欧洲一区二区三区在线观看| 欧美风情在线观看| 国产精品久久久久久久久久久不卡| 欧美美女15p| 深夜福利日韩在线看| 欧美精品videos性欧美| 日韩精品免费在线视频| 国产精品久久久久久五月尺| 欧日韩在线观看| 成人午夜两性视频| 国产成人精品网站| 欧美性猛交视频| 91精品在线观看视频| xxxxx成人.com| 亚洲精品一区在线观看香蕉| 日韩高清电影好看的电视剧电影| 亚洲大胆美女视频| 国产精品扒开腿做爽爽爽的视频| 国产欧美日韩免费| 色噜噜久久综合伊人一本| 国产精品亚洲美女av网站| 最新的欧美黄色| 中文字幕在线国产精品| 成人精品视频99在线观看免费| 亚洲激情视频在线观看| 欧美性极品xxxx做受| 亚洲国产天堂久久综合网| 欧美成在线视频| 国产成人极品视频| 日韩av一区二区在线| 久久综合伊人77777| 欧美极品少妇xxxxⅹ免费视频| 精品亚洲一区二区三区在线观看| 亚洲国产精品99| 色综合伊人色综合网站| 国产区亚洲区欧美区| 久久精品影视伊人网| xxxx性欧美| 中文字幕在线看视频国产欧美在线看完整| 久久精品国产精品亚洲| 在线观看国产欧美| 欧美有码在线视频| 亚洲视频一区二区三区| 91在线免费网站| 亚洲成人久久电影| 懂色av一区二区三区| 欧美黄色免费网站| 欧美一级bbbbb性bbbb喷潮片| 日韩欧美中文字幕在线播放| 97免费视频在线| 日韩高清电影免费观看完整版| 97在线视频精品| 日韩中文字幕在线精品| …久久精品99久久香蕉国产| 色婷婷成人综合| 性视频1819p久久| 韩国美女主播一区| 久久在线免费观看视频| 亚洲成人性视频| 国产91成人video| 国内精品久久久久久久久| 最好看的2019的中文字幕视频| 久久久久久久久久久成人|