首頁 資料庫 mysql教程 5. SQL Server数据库性能监控

5. SQL Server数据库性能监控

Jun 07, 2016 pm 04:48 PM
死鎖 監控 等待 阻塞

对于在线运行的系统,当前数据库性能监控,通常监视以下几点:(1)是否有阻塞(Blocking);(2)是否有等待(Waiting),阻塞就是锁(Lock)等待;(3)是否运行时间过长(Lon

对于在线运行的系统,当前数据库性能监控,通常监视以下几点:

(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 WHENr.statement_end_offset =-1                        THENDATALENGTH(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 WHENbr.statement_end_offset = -1                        THENDATALENGTH(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_timeDESC;

以上脚本返回运行超过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%'

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
家中監視器一般保存多久 家中監視器一般保存多久 Aug 30, 2023 pm 04:44 PM

家中監視器一般保存一到兩週。詳細介紹:1、更大的儲存容量,可以保存更長時間的錄影;2、硬碟的容量越大,可以保存的錄影時間就越長;3、根據不同地區和法律法規的要求,監控錄影的保存時間可能會有所不同;4、一些高級的監控系統還可以根據運動檢測或特定事件觸發錄像,從而節省存儲空間並提供更有用的錄像。

PHP非同步發送郵件:避免長時間等待郵件發送完成。 PHP非同步發送郵件:避免長時間等待郵件發送完成。 Sep 19, 2023 am 09:10 AM

PHP非同步發送郵件:避免長時間等待郵件發送完成。導言:在Web開發中,發送郵件是常見的功能之一。但是,由於郵件發送需要與伺服器進行通信,往往會導致用戶在等待郵件發送完成的過程中出現長時間的等待。為了解決這個問題,我們可以使用PHP非同步發送郵件的方式來優化使用者體驗。本文將介紹如何透過具體的程式碼範例實現PHP非同步發送郵件,並避免長時間的等待。一、理解異步發送郵件

用於監控網站變化的Python腳本 用於監控網站變化的Python腳本 Aug 29, 2023 pm 12:25 PM

在當今的數位時代,了解網站上的最新變化對於各種目的至關重要,例如追蹤競爭對手網站上的更新、監控產品可用性或隨時了解重要資訊。手動檢查網站是否有更改可能既耗時又低效。這就是自動化發揮作用的地方。在這篇文章中,我們將探討如何建立Python腳本來監控網站變更。透過利用Python的強大功能和一些方便的庫,我們可以自動化檢索網站內容、與先前的版本進行比較並通知我們任何更改的過程。這使我們能夠保持主動並及時對我們監控的網站上的更新或修改做出反應。設定環境在開始編寫腳本來監控網站變更之前,我們需要設定P

Laravel監控錯誤:提升應用穩定性 Laravel監控錯誤:提升應用穩定性 Mar 06, 2024 pm 04:48 PM

在Laravel監控錯誤方面,是提升應用穩定性的重要一環。在開發過程中,難免會遇到各種錯誤,而如何及時發現並解決這些錯誤,是保障應用正常運作的關鍵之一。 Laravel提供了豐富的工具和功能來幫助開發者監控和處理錯誤,本文將介紹其中一些重要的方法,並附上具體的程式碼範例。一、使用日誌記錄日誌記錄是監控錯誤的重要手段之一。 Laravel內建了強大的日誌系統,開發者

C#開發建議:日誌記錄與監控系統 C#開發建議:日誌記錄與監控系統 Nov 22, 2023 pm 08:30 PM

C#開發建議:日誌記錄與監控系統摘要:在軟體開發過程中,日誌記錄與監控系統是至關重要的工具。本文章將介紹C#開發中日誌記錄與監控系統的作用與實施建議。引言:在大型軟體開發專案中,日誌記錄和監控是不可或缺的工具。它們可以幫助我們即時了解程式運行狀況,快速發現並解決問題。本文將討論C#開發中如何使用日誌記錄和監控系統,以提高軟體品質和開發效率。日誌記錄系統的作用

如何使用Docker進行容器的監控與效能分析 如何使用Docker進行容器的監控與效能分析 Nov 08, 2023 am 09:54 AM

如何使用Docker進行容器的監控和效能分析概述:Docker是一種流行的容器化平台,透過隔離應用程式和其依賴的軟體包,使得應用程式可以在獨立的容器中運行。然而,隨著容器數量的增加,對容器的監控和效能分析變得越來越重要。在本文中,將介紹如何使用Docker進行容器的監控和效能分析,並提供一些具體的程式碼範例。使用Docker自備的容器監控工具Docker提供了

如何處理C++開發中的死鎖問題 如何處理C++開發中的死鎖問題 Aug 22, 2023 pm 02:24 PM

如何處理C++開發中的死鎖問題死鎖是多執行緒程式設計中常見的問題之一,尤其是在使用C++進行開發時更容易遇到。當多個執行緒互相等待對方持有的資源時,就可能發生死鎖問題。如果不及時處理,死鎖不僅會導致程式卡死,還會影響系統的效能和穩定性。因此,學習如何處理C++開發中的死鎖問題是非常重要的。一、理解死鎖的原因要解決死鎖問題,首先要了解死鎖產生的原因。死鎖通常發生在以

向日葵遠端控制會被監控嗎?向日葵遠端控制會洩漏隱私嗎? 向日葵遠端控制會被監控嗎?向日葵遠端控制會洩漏隱私嗎? Mar 15, 2024 pm 05:28 PM

  向日葵遠端控制會被監控嗎?向日葵遠端控制軟體可以幫助用戶快速的調取另一台電腦的資料等等,不過也有不少的用戶們擔心自己電腦的安全問題,下面就讓小編來為用戶們來為用戶們解答這些問題吧。  向日葵遠端控制會被監控嗎  答:不會。  向日葵遠端控制雖然有能力做,但是像向日葵遠端控制這種成立多年的大型軟體公司,是不會做出這種事情的。  對於辦公人員來說,也許在電腦上必裝的一個軟體,那就是遠端操控。對許多人來說,無論是居家辦公還是因為脫不開身等因素,在遠方透過另一台電腦操作當前的電腦可以減去很多的

See all articles