多個 SQL Server 文件與單個 RAID 陣列的優勢
最初發佈在堆棧溢出上,但重新措辭。
想像一下場景:對於一個數據庫,我有 RAID 陣列 R: (MDF) T: (事務日誌),當然還有共享 X: (tempDB) 的透明使用。
我一直在閱讀並得到的印像是,如果您使用的是 RAID,那麼在文件組中添加多個位於 R: 上的 SQL Server NDF 文件將不會產生任何改進。當然,添加另一個 raid 數組 S: 並在其上放置一個 NDF 文件會。
然而,作為一個相當精通軟體的人,假設即使對於位於一個 RAID 陣列上的較小 MDF,SQL Server 也會在 MDF 上執行增長和鎖定操作(用於寫入),因此將 NDF 添加到文件組中,即使他們坐在 R 上:會分配鎖定操作和增長操作以允許更多吞吐量嗎?或者從分佈式文件組重建數據所花費的時間是否超過了減少鎖定的好處?
我也知道表/索引/日誌的行為和好處可能會有所不同。
當 RAID 已經到位時,是否有一個很好的網站可以區分多個文件的好處?
我最近回答了類似的問題“多個數據文件和多個文件組”
它也相當複雜且難以提煉成簡潔的答案。了解 SQL Server 如何訪問數據會有所幫助:請參閱仍然有效的“SQL Server 2000 I/O Basics”
讀取性能由 RAM 控制。你不應該去磁碟讀取數據:如果你這樣做,你沒有足夠的記憶體。在 64 位之前的過去,如果你有一個 500 GB 的數據庫,你只能容納 64 GB 的 RAM,那麼你就可以拆分索引或類似的東西
當然,您通常不需要 RAM 中的整個數據庫,當您需要讀取它時,它應該在記憶體中徘徊,直到被驅逐。但是更多的 RAM 永遠不會出錯
寫入性能由 LDF 卷控制。查看上面文章中的預寫日誌
如果捲髮生故障,您*可以拆分數據庫文件以實現可恢復性。*通過良好的備份/恢復計劃,您可以分別使用 MDF 和 LDF。
可恢復性不僅僅是 RAID 陣列。如果您的磁碟控制器出現故障怎麼辦?您的磁碟是否都來自同一個供應商/批次/韌體?如果 RAID 5 中有 2 個磁碟發生故障怎麼辦?SQL Server 集群?損壞的文件?
如果您在同一卷上有多個文件,則任何讀取請求都將比讀取一個更大的文件花費更長的時間,通常是連續的。這就是為什麼文件伺服器和數據庫伺服器通常建構不同的原因
您找不到一個好的站點,因為它沒有完成:正如您所指出的,每個人都傾向於對同一文件組中的多個文件說“不”。
通過分區對齊和使用 64k 集群正確格式化 NTFS,您可以獲得更多收益