回答

0

任何程序的四個關鍵資源是可用內存,處理器,磁盤空間和磁盤使用情況。

讓我們依次調查其中的每一個。可用內存在SQL Server中管理良好(請參閱here)。默認行爲是從一堆內存開始,然後根據需要增加它。如果您的查詢負載不變,那麼SQL Server應該達到最大內存量並停止增長。這聽起來像是你的查詢負載在一段時間內是一致的,所以內存不會是一個大問題。此外,許多SQL服務器配置都會修復內存大小以避免與其他處理器的干擾。

處理能力。這可能是一個很大的問題。 SQL Server需要處理能力。處理器可能被其他Windows進程使用。這會減慢查詢速度,尤其是那些正在處理(而不是I/O)受到約束的查詢。但是,這可能會在多處理器機器上得到緩解。給定的SQL Server實例可能會分配一定數量的處理器。其餘的可以用於Windows。

磁盤空間。這沒有什麼影響。通常,所需的磁盤可用或不可用(並且需要它的查詢失敗)。臨時磁盤空間是一個例外,其可用性會影響查詢執行計劃。通常,臨時空間會放在自己的驅動器上,以避免與其他進程不必要的衝突。

I/O帶寬。 SQL Server需要通過文件系統與磁盤進行通信。這可能是一個真正的性能拖拽,它可能發生在多個不同的級別。操作系統本身可能會飽和I/O調用,從而減慢數據庫的速度。 CPU和磁盤之間的網絡可能會飽和,從而減慢讀寫速度。磁盤系統本身可能會因爲多個併發操作而變得緩慢 - 即使是來自不同的服務器。這可以在虛擬環境中變得更加複雜。

答案是肯定的。 Windows進程可能會影響SQL查詢的性能。我最好的猜測是,這種影響可能會導致吞吃處理器或者佔用磁盤帶寬。

+0

您可以刷掉內存使用情況,這是唯一真正可以控制的資源。 – Guffa

0

是的,數據庫服務器與機器上運行的任何其他資源共享資源,所以任何資源密集型進程都會顯着影響數據庫性能。

一個重要的資源是內存。如果SQL Server有任何用處,它將默認使用所有可用內存。如果您在服務器上運行任何其他進程,則應該限制SQL Server的內存使用,以便分配少一點,以便爲其他進程留出空間,以減少內存交換。