sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况
當你作為DBA時,很多人會向你抱怨:“這個程序數據加載和蝸牛一樣,你看看是不是服務器出問題了?”造成這個問題的原因有很多。可能是程序應用服務器問題,網絡問題,程序實現方式問題,數據庫服務器負荷過重。不管是哪個問題,數據庫總是第一個被抱怨的。我們DBA的職責就是找出問題所在,并解決它們。
問題解決第一步,診斷分析:
SELECT
parent_node_id AS Node_Id,
COUNT(*) AS [No.of CPU In the NUMA],
SUM(COUNT(*)) OVER() AS [Total No. of CPU],
SUM(runnable_tasks_count ) AS [Runnable Task Count],
SUM(pending_disk_io_count) AS [Pending disk I/O count],
SUM(work_queue_count) AS [Work queue count]
FROM sys.dm_os_schedulers WHERE status='VISIBLE ONLINE' GROUP BY parent_node_id
返回結果說明:
如果返回的是一條記錄,說明服務器不支持NUMA架構,否則記錄數就是NUMA架構的節點數(NUMA:非均勻訪存模型)。
Node_id:NUMA節點id。
No.of CPU in the NUMA:分配給NUMA節點的CPU數,或調度數(?number of schedulers)。
Total No. of CPU:服務器上可用CPU總數。
Runnable Task Count:在可運行隊列里,等待被重現調度的,用于分配任務(tasks)的工作者(workers)數。即,可運行隊列里請求數。
Pending disk I/O count:等待被完成的等待IO數。每個調度都有一個等待IO清單,用于判斷它們在上下文切換時是否完成。當請求被插入時,這個數字會增加。請求完成后,數字會減少。
Work queue count:等待隊列里的任務數。這些任務等待工作者拿走。
我會把這個腳本的輸出結果存到一張表,并設置為計劃任務每10分鐘運行一次,收集運行2天。這樣我們對服務器的運行狀況就有了基本的了解。在我測試的服務器上,當Runnable Task Count一直在10的時候,用戶就是抱怨服務器慢!正常情況,每個節點的這個數字應該低于10。這就給了我們當前系統運行的大致情況。如果這一步的輸出結果是正常的,我們就可以排除數據庫服務器的問題了,響應慢的問題可能是我們不能控制的阻塞造成的,或者只是部分會話響應慢,而不是整個服務器慢。
附圖2張,幫助大家理解任務(tasks)、工作者(works)、調度(schedulers)之間的關系。
對于每個CPU,SQLSERVER都會有一個scheduler與之對應。在每個scheduler里,會有若干個worker,對應于每個線程。在客戶端發過來請求之后,SQL會將其分解成一個或多個task。根據每個scheduler的繁忙程度,task會被分配到某個scheduler上。如果scheduler里有空閑的worker,task就會被分配到某個worker上。如果沒有,scheduler會創建新的worker,供task使用。如果scheduler里的worker已經到了他的上限值,而他們都有task要運行,那么新的task只好進入等待worker的狀態。
參考文章:
初涉SQL Server性能問題(4/4):列出最耗資源的會話
在上3篇文章里,我們討論了列出反映服務器當前狀態的不同查詢. 初涉SQL Server性能問題(1/4):服務器概況 初涉SQL Server性能問題(2/4):列出等待資源的會話 初涉SQL Ser ...
初涉SQL Server性能問題(2/4):列出等待資源的會話
在初涉SQL Server性能問題(1/4)里,我們知道了如何快速檢查服務器實例上正運行的任務數和IO等待的任務數.這個是輕量級的腳本,不會給服務器造成任何壓力,即使服務器在高負荷下,也可以正常獲得結 ...
初涉SQL Server性能問題(3/4):列出阻塞的會話
在 初涉SQL Server性能問題(2/4)里,我們討論了列出等待資源或正運行的會話腳本.這篇文章我們會看看如何列出包含具體信息的話阻塞會話清單. /************************ ...
SQL Server 無法連接到服務器。SQL Server 復制需要有實際的服務器名稱才能連接到服務器。請指定實際的服務器名稱。
異常處理匯總-數據庫系列 ?http://www.cnblogs.com/dunitian/p/4522990.html SQL性能優化匯總篇:http://www.cnblogs.com/dunit ...
SQL Server 性能優化(一)——簡介
原文:SQL Server 性能優化(一)--簡介 一.性能優化的理由: 聽起來有點多余,但是還是詳細說一下: 1.節省成本:這里的成本不一定是錢,但是基本上可以變相認為是節省錢.性能上去了,本來要投 ...
影響Sql server性能的因素
目前本人在看 ,以下內容是本人看書筆記 數據庫性能取決于各方面綜合因素: 硬件,操作系統,軟件 硬件:內存,CPU,磁盤 當服務器的物理內存不足時,會產 ...
SQL Server 性能優化詳解
故事開篇:你和你的團隊經過不懈努力,終于使網站成功上線,剛開始時,注冊用戶較少,網站性能表現不錯,但隨著注冊用戶的增多,訪問速度開始變慢,一些用戶開始發來郵件表示抗議,事情變得越來越糟,為了留住用戶, ...
SQL SERVER性能優化綜述
SQL SERVER性能優化綜述 一個系統的性能的提高,不單單是試運行或者維護階段的性能調優的任務,也不單單是開發階段的事情,而是在整個軟件生命周期都需要注意,進行有效工作才能達到的.所以我希望按照軟 ...
[轉]SQL Server 性能調優(內存)
存儲引擎自調整 sql server 是如何分配內存的 32bit地址空間的限制 用戶模式vas分配和virtualalloc 非boffer pool 分配內存(保留內存) VAS調整 AWE ...
隨機推薦
iPhone 6/plus iOS Safari fieldset border 邊框消失
問題:iPhone6 plus 手機瀏覽網頁,fieldset border 邊框消失. 示例代碼:
div與>;div區別小結
兩者之間的區別:例如div span得到的是div下所有的span元素,而div>span則是取得的div下第一級的span元素. 示例代碼如下: & ...
牢記!SQL Server數據庫開發的二十一條注意點
如果你正在負責一個基于SQL Server的項目,或者你剛剛接觸SQL? Server,你都有可能要面臨一些數據庫性能的問題,這篇文章會為你提供一些有用的指導(其中大多數也可以用于其它的DBMS). ...
談談final, finally, finalize的區別
final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承.因此一個類不能既被聲明為 abstract的,又被聲明為final的.將變量或方法聲明為fi ...
peewee 事物 回滾
peewee 事物 回滾 #!/usr/bin/env python # coding=utf-8 from peewee import * db = MySQLDatabase(host='123. ...
MongoDB 的 upsert
MongoDB?的update 方法的三個參數是upsert,這個參數是個布爾類型,默認是false.當它為true的時候,update方法會首先查找與第一個參數匹配的記錄,在用第二個參數更新之,如果 ...
深入淺出的webpack構建工具---webpack基本配置(一)
深入淺出的webpack構建工具---webpack基本配置(一) 閱讀目錄 一:webpack入門構建: 1. 安裝webpack到全局 2. 安裝webpack到本項目. 3. 如何使用webpa ...
【Java并發核心七】計劃任務ScheduleExecutorService
Java中定時任務Timer工具類提供了計劃任務的實現,但是Timer工具類是以隊列的方式來管理線程的,并不是以線程池的方式,這樣在高并發的情況下,運行效率會有點低. ScheduleExecutor ...
總結
以上是生活随笔為你收集整理的sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大前端进阶 Node.js》系列 必知
- 下一篇: mysql性能监控 调优_MySQL管理