我有一個 SQL Server 2005 實例,運行速度有些緩慢。這關聯顯示 perfmon 詳細資訊。由於我不會每天分析此類數據,因此我想知道 I/O 系統是否存在一些真正的問題。
伺服器使用 SAN,且 DB 檔案和 Tempdb 檔案位於相同磁碟機 (E:) 上。不是最好的架構,但我無法控制伺服器。此伺服器用於使用 Cognos 運行報告,因此它主要是唯讀資料庫。
謝謝
這是一些需要更正的有趣程式碼。
select "tempSalesRpt_SubRgnDist"."Region" AS "Region",
min("tempSalesRpt_SubRgnDist"."RegionName") AS "Region_Text"
from "SalesReporting"."dbo"."tempSalesRpt_SubRgnDist" "tempSalesRpt_SubRgnDist",
(select "SecurityMaster"."Userid" AS "Userid", "SecurityMaster"."SoldTo" AS "SoldTo"
from "SalesReporting"."dbo"."SecurityMaster" "SecurityMaster"
where "SecurityMaster"."Userid" = lower ('USTGACA')) "SecurityMaster4"
where NOT "SecurityMaster4"."Userid" is null
and "tempSalesRpt_SubRgnDist"."SoldTo" ="SecurityMaster4"."SoldTo"
group by "tempSalesRpt_SubRgnDist"."Region"
order by 1 asc , 2 asc
每次查詢都會存取 securitymaster 表,該表是最近增加的表。
我假設此程式碼具有不可控制的程式碼,但執行計劃顯示使用了索引查找和鍵查找。
我確實看到一些新的索引可以提供幫助,但需要進一步挖掘。
答案1
根據提供的數據,您已經發現了一些事情。您的磁碟佇列是每次讀取的秒數和每次寫入的秒數計數器比您想要的要高得多。現在要注意的是,這並不意味著它是磁碟問題,只是磁碟受到撞擊。您可能有索引問題或統計問題,這會導致 SQL Server 對磁碟的存取超出其所需的程度。
首先查看資料庫中的索引,看看是否需要建立任何新索引。這會增加資料庫的大小,但您會發現磁碟流量減少,查詢運行時間減少。
您可以先查看長時間運行的查詢的執行計劃,這將告訴您需要在哪裡新增索引。
答案2
除了 Denny 的答案之外,您的機器上還有大約 5GB 的可用記憶體 - 您是否正確配置了 SQL 的記憶體?
如果您有 32 位元系統,您可以透過啟用 AWE 來尋址更多記憶體:
http://technet.microsoft.com/en-us/library/ms190673(SQL.90).aspx
SQL 將使用這些額外的記憶體來快取更多的資料庫表/索引(假設您的資料庫大於可用記憶體)。