Sql-Server

SSD 上的 SQL Server 數據庫 - 每個表的單獨文件有什麼優勢?

  • February 28, 2012

我正在創建一個數據庫,其中將有大約 30 個表,每個表包含數千萬行,每個表包含一個重要列和一個主/外鍵列,以最大限度地提高查詢效率。更新和插入,並大量使用聚集索引。其中兩個表將包含可變長度的文本數據,其中一個包含數億行,而其餘的將僅包含數字數據。

因為我真的想從可用的硬體(大約 64GB 的 RAM、非常快的 SSD 和 16 個核心)中榨取最後一滴性能,所以我正在考慮讓每個表都有自己的文件,這樣無論是否我要加入 2、3、4、5 或更多表,每個表將始終使用單獨的執行緒讀取,每個文件的結構將與表內容緊密對齊,這有望最大限度地減少碎片並使其更快用於 SQL Server 添加到任何給定表的內容。

需要注意的是,我被困在 SQL Server 2008 R2 Web Edition上。這意味著我不能使用自動水平分區,這將其排除在性能增強之外。

每個表使用一個文件實際上會最大限度地提高性能,還是我忽略了內置的 SQL Server 引擎特性,這會使這樣做變得多餘?

其次,如果每個表使用一個文件是有利的,為什麼create table只讓我選擇將表分配給文件組而不是特定的邏輯文件?這將要求我為我的場景中的每個文件創建一個單獨的文件組,這向我表明 SQL Server 可能沒有設想我假設的優勢來自於我所提議的。

我正在考慮讓每個表都有自己的文件,這樣無論我加入 2、3、4、5 個或更多表,每個表都將始終使用單獨的執行緒讀取,每個文件的結構將與表內容緊密對齊,這有望最大限度地減少碎片並讓 SQL Server 更快地添加到任何給定表的內容

你到底在說什麼?不確定您從哪裡獲得資訊,但您當然應該放棄該來源。您在這裡假設的任何內容實際上都不是正確的。

如果您想閱讀有關 SQL Server 的 SSD 性能的精彩討論,這裡有幾個部落格系列。像往常一樣,Paul Randal 的文章是最熱門的讀物:

Brent 也有一個關於這個主題的精彩演講:SSD 上的 SQL:Hot and Crazy Love,還有更多。

瀏覽所有這些展示文稿,您會很快注意到它們都專注於寫入,因為這是 SSD 性能發揮作用的地方。您的文章措辭幾乎完全是關於閱讀的,這是一個不同的主題。如果讀取是您的痛點,那麼您應該談論 RAM,而不是 SSD,以及正確的索引和查詢策略。

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