Sql-Server

5個大型數據庫的驅動器配置

  • April 28, 2010

我有 5 個數據庫,每個 300GB,目前位於由 5 個驅動器組成的 RAID 5 陣列上。同時,所有數據庫都被大量使用,因此驅動器速度是一個問題。

如果我擺脫 RAID 5 配置並將每個數據庫放在單獨的驅動器上,我會看到更好的性能嗎?由於在其他地方鏡像,RAID 5 提供的冗餘不是必需的。

然後伺服器是否能夠並行執行對不同數據庫驅動器的讀/寫?至少比它在 RAID 中時更是如此?

這一切都在 Windows 2003 / SQL 2008 上。

如果同時使用數據庫,則將數據庫放在不同的主軸上很可能會執行得更快。如果他們經歷了相互抵消的繁忙時段,儘管單個 RAID 陣列將執行得更快,因為單個數據庫的讀取將分佈在多個驅動器上(當然,如果它位於單個驅動器上,則永遠不會這樣)。

RAID5 由於其傾倒的寫入性能,通常是數據庫的性能瓶頸。如果您的陣列是一個直的 5 驅動器陣列,那麼寫入磁碟的每個塊都可能導致三個讀取,然後是奇偶校驗計算,然後是兩個寫入(更新的塊和更新的奇偶校驗塊)以及更新的每個頁面DB 將導致至少兩次塊寫入:一次寫入事務日誌,一次寫入數據文件。如果您執行 4 個驅動器加熱備件,情況會好一些,但不會太多。這就是為什麼通常使用 RAID1+0 而不是 RAID5 進行數據庫工作的原因(或者有時使用 RAID1E 或類似的,如果可用,性能類似地更好)。

一切都被寫入事務日誌和數據文件的事實是一個重要的事實。通過將日誌文件和數據文件放在不同的驅動器上(等等不同的磁頭組),您可以大大加快插入/更新操作。最好圍繞五個驅動器安排數據庫,這樣每個驅動器的日誌和數據都在不同的驅動器上。您如何安排這將取決於每個數據庫的預期活動 - 如果可能,您希望避免同時繁忙的兩個數據庫位於同一驅動器上。

另一種選擇是擁有兩個獨立的 RAID1 陣列 - 一個用於所有日誌文件,一個用於數據文件。我懷疑你會從這個棕褐色中看到明顯更好的性能,因為每個數據庫(數據+日誌)都在自己的單個驅動器上。或者,如果您真的不關心冗餘(例如,如果您的鏡像是使用複制/集群安排維護的,這意味著如果主數據庫死亡,您將失去很少的事務),您可以使用一對 RAID0 來代替額外的速度。

如果三個驅動器的小錢不是問題,並且您的機器有空間容納更多驅動器,您可以擁有一對 RAID10 陣列(一個用於數據,一個用於日誌,總共 8 個驅動器),那麼您在沒有 RAID5 的情況下擁有冗餘寫入性能問題,您可以通過將日誌和數據放在單獨的驅動器上來提高寫入性能,並且在 RAID10 中經常看到潛在的讀寫提升(具有良好控制器的 4 驅動器 RAID10 的性能往往與 2 驅動器 RAID0 相似) . 我們的一些生產數據庫就是這樣安排的,我可以告訴你他們飛了與我測試過的其他安排相比。如果您有一個支持 RAID1E 的硬體控制器(不幸的是,它在不同的控制器上使用不同的名稱),那麼您可以對兩個 3 驅動器 RAID1E 陣列執行相同的操作,只需要 6 個驅動器。

引用自:https://serverfault.com/questions/136449