Sql-Server

一台伺服器中的多個數據庫問題

  • January 19, 2018

我們公司有5個不同的數據庫。多個數據庫都沒有關聯或利用跨數據庫連接。我們有充足的資源和預算。

我們公司正在討論:

  • 1 個伺服器實例上的 5 個數據庫,
  • 或 5 個不同伺服器上的 5 個數據庫。

問題:如果我們將所有內容都放在一台伺服器上,可能會出現哪些具體問題、障礙問題?我的背景不是 DBA,所以想學習可以與團隊討論的範例。

背景:

公司 1 個伺服器實例的論點:我們有“資源管理器”和“AlwaysOn 可用性組”以及故障轉移集群。資源調控器將處理數據庫之間的記憶體、Cpu、io 工作負載。因此,與 AlwaysOn DR 一起,它可以處理失控查詢、糟糕的設計、記憶體問題。

數據庫每個 100GB,關鍵公司資訊,最少 5000 萬行

我們每秒處理 300 筆交易

RTO = 10 分鐘

答案很經典——“視情況而定!”

與您的利益相關者坐下來,然後介紹兩種選擇的利弊。在客戶託管業務中,我遇到過這種情況,以下是我的觀點:

多個數據庫都沒有關聯或利用跨數據庫連接。我們有充足的資源和預算。

這意味著數據庫是解耦或獨立的。我會說,根據關鍵性和正常執行時間 SLA 對 dbs 進行分類,然後在 2-3 個伺服器之間分配它們(VM 也是另一種選擇)。這樣,您就不會將所有雞蛋放在同一個籃子裡。

為什麼 ?

  • 將所有 5 個數據庫放在一台伺服器上將是單點故障。單個數據庫的問題會使所有其他數據庫面臨風險。盡可能地隔離您的風險,但這將花費您額外的許可和維護成本,您可以說 - 充足的資源和預算。
  • 即使您啟用了資源調控器,它也不會調控緩衝池。它只管理“查詢的工作記憶,例如排序、散列等”。在 2014 年及以後,您可以使用資源調控器限制 IOPS。
  • 對於託管所有數據庫的給定伺服器,您有一個解決方案來進行備份 - 完整和日誌、完整性檢查、索引維護。如果您的伺服器出現問題並且該作業中途失敗,則其他數據庫將受到影響,除非您具有檢測和修復問題並繼續其餘部分的內置機制。
  • 作業系統的外部問題會影響您在一個地方的所有資產。
  • 即使使用 AG,您也有固定數量的工作執行緒,它們會與單個伺服器上的所有數據庫共享。根據關鍵程度分散數據庫將緩解該問題。
  • Tempdb 是每台伺服器一個。所以想像一下你所有的數據庫都在同一台伺服器上可能是一個瓶頸。
  • 如果您有一台伺服器為所有數據庫提供服務,那麼問題隔離將很困難。

我寫了一個類似的答案哪個更好:每個應用程序一個數據庫,還是只有一個數據庫?

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