出於性能原因的數據庫分區在虛擬化環境中是否有意義?
在物理硬體上執行 SQL Server 時,將數據庫數據和日誌文件放在單獨的磁碟或 RAID 陣列上可以提高性能、彈性和維護。通過單獨的物理磁碟和 RAID 陣列對數據庫進行分區也是一種選擇。簡而言之,更多的錠子更好。
當 SQL Server 在虛擬環境中執行時,心軸的概念會有所不同。您通常幾乎無法直接控制虛擬磁碟映射到的物理磁碟。這是否意味著對數據庫進行分區或將數據和日誌文件拆分到單獨的虛擬磁碟上沒有意義,就像我們對物理磁碟所做的那樣?
我了解對仍然適用於虛擬環境的數據庫進行分區還有其他原因。例如,大型只讀表可以在一個單獨的分區中,只需要備份一次,但這不是本文的主題。
這是一個古老的問題,但我遇到了這個問題,並對一個特定的評論感到震驚,這表明最初的問題是“困惑”的。這個問題非常清楚,只是不嚴格地與數據庫管理有關。它比任何東西都屬於虛擬環境中的伺服器虛擬化和儲存配置領域。這個問題很可能更適合不同的 StackExchange 站點,但是因為不理解這個問題而傲慢地駁回這個問題是不可接受的。
讓我試著更好地解釋這個問題,並就這個主題給出我最好的建議,試圖在這里為任何可能被搜尋引擎丟棄的其他人留下有用的東西。
在部署數據庫伺服器時,將作業系統、數據文件和日誌文件放在不同的磁碟集被認為是最佳實踐。作為一個隨機範例,假設我們有一個由三個 RAID 陣列組成的伺服器:
RAID 1 中的 2 個 HDD 用於作業系統 RAID 10 中的 4 個 HDD 用於數據庫數據文件 RAID 10 中的 4 個 HDD 用於數據庫日誌文件 此設置將分離 IO 並為數據文件和日誌創建單獨的故障點,以及將其與作業系統分開。這樣做是出於性能、彈性和維護的原因。很簡單,對吧?
但是,如果我們在虛擬環境中部署數據庫伺服器呢?虛擬環境中沒有物理磁碟。不,真的沒有,除非您將虛擬機磁碟 1:1 映射到物理磁碟,這不是您在典型虛擬伺服器場中看到的。即使這樣,物理磁碟和虛擬伺服器之間也會有一個虛擬化層,將物理磁碟顯示為連接到虛擬磁碟控制器,而不是磁碟實際連接到的物理控制器。
那麼問題是什麼?我們以小型虛擬伺服器部署為例。一堆在虛擬化集群中執行的機架伺服器和一個 SAN,其中包含 RAID 5 和 RAID 6 中的一堆磁碟組,具有自動儲存分層功能。在此範例中,所有虛擬磁碟都儲存在 SAN 中。
您現在如何將單獨的物理磁碟組分配給您的虛擬數據庫伺服器?或者也許你沒有?這就是這裡提出的問題。沒有給出有用的答案,這是可以理解的,因為這是一個複雜的問題,答案很大程度上取決於您的特定部署。一些設置可能讓您非常嚴格地控制虛擬磁碟最終位於哪種類型和哪些特定物理磁碟上,而其他設置可能更像是一個自動處理所有事情的黑匣子。
在我上面概述的簡單“one-SAN”範例中,我想說您並不需要這樣做。但你可能仍然想要。即使您實際上無法控制 IO 最終位於哪些物理磁碟上,拆分數據還有其他好處。如果您將來遷移到新的虛擬環境,您會獲得具有不同和已知性能特徵的單獨 LUN,該怎麼辦?如果數據已經分散到多個虛擬磁碟上,則將它們移動到具有適當 IO 功能的新 LUN 會容易得多。在許多管理程序中,您還可以為虛擬磁碟賦予不同的 IO 優先級。同樣,這為您提供了一些額外的控制。更準確地控制快照行為也成為可能。每個數據庫都有自己獨立的底層文件系統,它沒有
基本上,這歸結為您的性能要求、數據庫大小、您可以使用的管理程序和儲存解決方案以及許多其他因素。我希望我已經指出了一些有用的提示。未雨綢繆。雖然具有 SAN/NAS 解決方案的虛擬環境在許多方面看起來像是黑匣子,但其中許多確實有辦法實現與傳統直接儲存相同的性能和冗餘目標。