2009-02-23 56 views
3

我想不出爲什麼我們需要在一個文件組中有多個文件。我之所以這樣想,是因爲我們可以從T-SQL(最終用戶)級別控制文件組,但不能從T-SQL(最終用戶)級別控制文件組的單個文件。任何意見或想法爲什麼仍然需要文件?SQL Server文件和文件組

由於事先 喬治

回答

1

我可以提供一個長期的解釋,但MSDN確實它here一個好工作。這可能是因爲你並不需要在一個文件組中包含多個文件,但這並非每個人都適用。

+0

嗨,我讀過這篇文檔,並且還閱讀了本文檔的相關SQL Server 2008在線書籍。但它從來沒有提到爲什麼我們需要一個文件組中的多個文件。如果我錯過了具體說明爲什麼更多文件很好的文檔中的任何內容,請讓我知道。 – George2 2009-02-23 02:57:34

+0

「在多個驅動器之間分配I/O」和「某些系統可以通過控制數據和索引在特定磁盤驅動器上的位置來提高性能,文件組可以幫助完成此過程。」 – colithium 2009-02-23 03:43:42

4

有每個文件組多個文件時纔有用,原因如下:

  1. 分發磁盤I /在性能方面的原因多個磁盤O負載。即在無法用額外的磁盤重新配置RAID配置的情況下,或者沒有RAID。
  2. 如果您有VLDB並且由於物流原因不希望處理超大型單個文件。

有一種「都市傳奇」,SQL Server每個文件只使用1個線程,因此文件數量應該與CPU數量相匹配。然而,這是錯誤的,因爲discussed by Microsoft here

從歷史上看,還有另一個原因。相信與否在SQL Server 4.2到7的日子裏,sql server有時會安裝在FAT32文件系統上,該文件系統有4個文件限制。將文件鏈接在一起(我們現在稱爲文件組)的能力是解決文件系統限制的一種方法,並且允許基於FAT安裝的DB大於4gigs。

2

舊線程,我知道,但這裏對我來說很有意義:早在windows文件系統的最大文件大小FAT32是2GB。如果你的數據庫文件變大了,你就被搞砸了(發生在我身上的是一個MS Access數據庫)。因此,他們允許定義最大文件大小(如:2GB),您可以添加更多文件。如果數據庫增長並且超過了最大大小,下一個文件就會被填滿,直到滿滿爲止,依此類推。所有這些文件都可以作爲一個文件組來尋址。您可以通過選擇一個文件組來定義一個表數據位置,但是您不會看到該文件組中的哪個文件中的表數據將最終結束。所有你知道的是你的表格數據可以在文件組中的任何文件中結束。 通過這種「分裂」您的文件系統從來沒有看到比max filesize大的文件(這裏:2GB),儘管您的數據庫中的表可能會大很多倍。 今天,設置多個文件對於將大量數據文件「切碎」成小塊以進行基於文件的備份很有用(請問您的網絡管理員需要什麼),因爲在備份過程中,將大型(如1TB)文件寫入分區需要很長時間,甚至在快速的RAID,所有其他的寫入操作需要等待很長時間,較短的等待間隔讓高優先級的操作更快地執行)。 如果您關心並行訪問同一個表,請考慮水平分區,如http://msdn.microsoft.com/en-us/library/ms188730%28v=sql.105%29.aspx。這允許將表格的數據分散在不同硬盤上,例如「磁盤R上1月的所有銷售額:」,「磁盤S上2月的所有銷售額:」,而不創建單獨的表格。在分區表的過程中您可以定義哪個部分應該轉到哪個文件組。