收集12小時的profiler跟蹤檔案,用rml分析檢視消耗前n的語句:
上圖是某生產環境特定loginname,消耗前n的情況(按總cpu降序)。藍色底紋的是幾個呼叫頻繁的過程,可以看到過程平均cpu在1000毫秒以上,平均執行時間在1.5秒左右,注意它們的平均邏輯讀很低!檢視儲存過程**,發現有乙個共同點,與 鏈結伺服器.資料庫.架構.表名 left join關聯查詢。
檢視當前伺服器使用鏈結伺服器的例子,儲存過程指令碼如下:
語句很簡單,在同一視窗執行過程語句的主體部分,乙個有鏈結伺服器(鏈結到本地),乙個沒有鏈結伺服器,檢視實際執行計畫:
有鏈結伺服器的查詢開銷為100%,本地直接查詢0%,檢視消耗大的操作對應的計畫資訊,遠端查詢時將整張表的資料返回;本地查詢時通過關聯字段使用seek謂詞將對應score返回:
實際上這個過程平均執行時間1.5s,主要消耗在遠端查詢,遠端查詢最終體現在第乙個圖的紅框語句,裡面有tbl1003、col1013、col1014別名,語句的平均邏輯讀比較大,對於執行頻繁的語句顯然是有問題的。之前使用鏈結伺服器是由於資料庫存放在不同的伺服器上,目前已遷移到同一臺伺服器,因此可以考慮將鏈結伺服器去掉,如果以後還需要遷移出去,那就得考慮遠端查詢返回記錄數,以及網路情況。盡量少用例子中所示的鏈結伺服器關聯查詢,可以將遠端的資料同步到本地,然後本地直接查詢。
如果我們開啟profiler跟蹤,可以看到鏈結伺服器在事件rpc:completed會將表取別名為tbl**、列取別名為col**,我們可以用乙個帶鏈結伺服器的查詢,帶上where條件(方便過濾跟蹤):
如果跟蹤資料中發現很多類似上圖中的語句,基本可以知道是由鏈結伺服器產生的。
BIOS 對伺服器效能的影響
節能在降低能耗的同時也意味著效能的下降。下面介紹的是在 bios 這個層面涉及到的一些節能開關,比較具有通用性。1.turbo boost 跟超頻有關,詳細的請看這裡。2.c1e,c state hardwaresecrets 有一篇介紹 cx state 的文件,比 wiki 上的介紹的更詳細。3...
SQL Server 鏈結伺服器查詢慢?
1 執行 regedt32,瀏覽至 hkey local machine oftware microsoft msdtc。新增乙個 dword 值 turnoffrpcsecurity,值資料為 1。2 重啟ms dtc服務。3 開啟 管理工具 的 元件服務 a.瀏覽至 啟動管理工具 b.選擇 元件...
sql server 使用鏈結伺服器遠端查詢
pk select from sys.key constraints where object id object id tb fk select from sys.foreign keys where parent object id object id tb 建立鏈結伺服器 exec sp ad...