2012-04-12 27 views
0

我在服務器中有一些數據庫。這臺服務器有16GB內存,而這個系統只是用作數據庫服務器。SQL Server 2008中的重要進程

過了一會兒,有不同的數據庫我看到大部分的RAM空間(約14GB)使用,如果我使用其他應用程序和重新工作,我不能用我的電腦,它是掛起來的工作。

如何找出哪個數據庫有更多的RAM使用情況,然後,如何找出哪些查詢使這些資源充滿?

+2

這是SQL Server的正常行爲 - 除非你限制它,SQL Server將使用所有可用內存的服務器上 - 以加快處理速度。這不是**任何錯誤或問題的跡象 - 完全沒有 - 它是SQL Server盡力做好表現! – 2012-04-12 09:00:13

+0

但它會有興趣知道真正的RAM使用SQL服務器。任務管理器並不真正顯示RAM的實際使用情況。 – YvesR 2012-04-12 10:22:04

回答

1

Sql Profiler是一個用於分析哪些查詢進入數據庫的漂亮工具。

set statistics time on 

set statistics io on 

set statistics profile on 

統計是,當你找到一個你認爲是慢分析特定查詢的好方法..

待辦事項你不知道哪些查詢是最重的?你應該仔細檢查你的代碼,看看你正在運行什麼類型的循環,子查詢或其他怪異的查詢,並從你認爲重要的地方去做。和SQL Server管理測試這些...

+0

我只是管理系統,我不知道寫的代碼。所以我嘗試使用sql profiler,但命令中沒有明確的答案。一段時間後RAM已滿,無法重新啓動就無法清空! – 2012-04-12 08:33:42

+0

服務器上運行多少個數據庫?併爲哪些應用程序?什麼樣的應用程序,它們的用途有多重? – 2012-04-12 10:16:34

+0

約10個數據庫。應用程序是不同的。基於網絡的Win基礎和大約400個用戶使用它。 – 2012-04-12 11:21:23

1

有一個在sys.dm_exec_query_stats動態管理表中的一些有用的信息(2005年起)找到哪些查詢正在運行是最密集的IO方面,經過時間等

嘗試運行此例如(見細節上的最後25個運行查詢):

SELECT DISTINCT TOP 25 t.TEXT AS query, s.* 
FROM sys.dm_exec_query_stats s 
     CROSS APPLY sys.Dm_exec_sql_text(s.sql_handle) t 
ORDER BY s.last_execution_time DESC 
+0

在標題中我寫了SQL2008,我認爲這個查詢可以提供幫助。我需要檢查它。 – 2012-04-12 09:02:49

+0

@HamedR,你是對的 - 我沒有注意到。道歉 - 我編輯了我的答案。 – Bridge 2012-04-12 10:17:27