
最好是擁有一個包含多個資料庫的單一實例,還是將資料庫分散到幾個實例中?
答案1
我建議在同一個盒子上使用一個實例而不是多個實例,除非您正在嘗試解決一個非常專業的問題。它使管理伺服器變得更加容易,並且使用的資源更少。
系統管理的一個非常好的規則與程式設計的規則相同,或者說當我以前仍然這樣做時:讓事情變得盡可能複雜,以便正確解決問題,不多也不少。多個實例通常會使事情比具有多個資料庫的一個實例更複雜。
如果您需要分離事物以保護它們,那麼我建議安裝多台伺服器(您可以在此處虛擬化到一個實體機器上),因為我不確定是否會將一個機器上的不同實例視為安全邊界。
答案2
假設 SQL Server,因為這就是我所知道的...
我建議將它們保留在單一實例中。
這允許在跨資料庫存取資料時獲得更高的效能(即,從資料庫 A 中,您需要從資料庫 B 中檢索某些內容)。如果它們是單獨的實例,則需要透過連結伺服器、使用命名管道或其他方式來完成通訊。在單一實例中,您可以直接存取所有資料庫(受安全限制)。
將它們放在一起可能會導致單點故障,但我發現 SQL Server 本身非常強大。整台機器可能會失敗(所有實例都宕機),但我還沒有見過那種使單一實例安排更適合這種方式的失敗。
由於您可以管理文件層級的存儲,因此劃分為多個實例並沒有什麼幫助。
如果您以某種方式受到 SQL 注入攻擊(沒有任何藉口,因為它很容易預防!),您可能會考慮安全隱患。但是,如果實例之間有連結伺服器,那麼您實際上並沒有獲得更多保護。
答案3
無論我們談論什麼 SQL Server,作為一般原則,出於其他人已經提到的所有原因,我將盡可能在一個執行個體下執行所有資料庫。此外,如果您發現一個實例不能很好地處理負載,那麼就需要再增加一台機器,而不是另一個實例。我能想到的唯一例外是僅使用自己的實例運行的應用程式。當然,如果可能的話,最好避免使用此類軟體或將其放置在不同的電腦上。
答案4
從記憶體的角度來看(再次假設 MS SQL Server),單一執行個體中的多個資料庫通常會導致更有效的使用。
當現成的應用程式需要時,我們運行多個實例。對於我們開發的東西,我們將其全部放在一個實例中。