Sql-Server

繁忙的數據庫會影響同一台伺服器上的其他人嗎?

  • December 17, 2018

我有一個非常繁忙的數據庫,有很多讀寫操作。我想在同一台伺服器上創建另一個數據庫,但我想知道那個繁忙的數據庫是否會降低第二個數據庫的性能。

我正在使用 SQL Server。

一般來說,我想了解阻塞查詢是針對每個數據庫還是針對每個伺服器實例。

繁忙的數據庫會影響其他人嗎?一般來說,是的。在單個實例中,所有數據庫共享緩衝池、工作執行緒、計劃記憶體和其他系統資源。對於所有查詢在需要時寫入(或溢出)的實例,有一個 TempDB。

在一台機器上安裝多個實例可能無法阻止這種情況。他們可能仍將共享 CPU 核心、網卡和(也許)磁碟主軸。一個實例上非常繁忙的數據庫可能會對共享這些類型資源的另一個實例上的數據庫產生不利影響。將實例放在虛擬機中並不能避免這種衝突。

可以將每個實例配置為具有專用的 CPU、記憶體、磁碟、網卡等。然後一個實例對另一個實例的影響很小或沒有影響。到那時,我會爭辯說,兩台獨立的機器位於一個機箱內。

因此,您關於阻塞查詢的問題歸結為系統配置。如果一個數據庫中的查詢阻塞,並且它在持有大量資源的同時這樣做 - 例如一個非常大的臨時表或打開的事務中的很多行 - 並且該資源與另一個數據庫共享 - 那麼單獨數據庫中的另一個查詢可能無法獲取它需要的資源(磁碟、記憶體等)並且會失敗。

在 DML 的正常過程中採用的共享鎖和排它鎖在一個 DB 中處於活動狀態,不會影響另一個 DB 中可能發生的讀取和寫入(在沒有跨數據庫查詢的情況下)。

引用自:https://dba.stackexchange.com/questions/225129