1、檔案和檔案組的含義與關係
每個資料庫有一個主要資料檔案.和若干個從檔案。檔案是資料庫的物理體現。 檔案組可以包括分布在多個邏輯分區的檔案,實現Server Load Balancer。檔案組允許對檔案進行分組,以便於管理和資料的分配/放置。例如,可以分別在三個硬碟上建立三個檔案(Data1.ndf、Data2.ndf 和 Data3.ndf),並將這三個檔案指派到檔案組 fgroup1 中。然後,可以明確地在檔案組 fgroup1 上建立一個表。對錶中資料的查詢將分散到三個磁碟上,因而效能得以提高。在 RAID(磁碟冗餘陣列)條帶集上建立單個檔案也可以獲得相同的效能改善。然而,檔案和檔案組使您得以在新磁碟上輕易地添加新檔案。另外,如果資料庫超過單個 Microsoft Windows 檔案的最大大小,則可以使用次要資料檔案允許資料庫繼續增長。
2、檔案、檔案組在實踐應用中常見的問題
通常情況下我們構造的資料庫都只有兩個檔案,mdf檔案和ldf檔案.但是這樣有兩個缺點:
(一)容易導致檔案過大
我們知道,mdf檔案是資料庫檔案,這樣的話也就意味著隨著資料庫的增大mdf就會相應的增大,顯然在現在的應用中資料膨脹是太常見的事情了,當你的應用變大後,mdf檔案也會變大,然而windows對檔案的大小是有要求的,這樣的話很容易導致mdf檔案達到windows所允許的檔案大小的界限(於是資料庫就崩潰了)。
(二)沒有利用到磁碟陣列
大型的伺服器好多都有磁碟陣列,你可以把磁碟陣列簡單的假象成n個一塊轉動的磁碟,磁碟陣列的設計是希望通過多個磁碟的串聯來得到更大的讀寫效率.但是如果你的資料庫只有一個mdf檔案(ldf檔案暫時不考慮),那麼你總是只能夠利用這個磁碟陣列裡面的一個磁碟而已.那樣的話昂貴的磁碟陣列的效率就由並聯變成串聯了.試想如果我們能夠讓mdf分散成多個檔案,比如說磁碟陣列上的每個磁碟中都分配一個檔案,然後把mdf中的資料分散到各個檔案中,我在讀取的時候就是串聯的讀取了,這樣就充分的利用了磁碟陣的存取效能.
這兩個問題平常我們沒有遇到過(條件不具備),但是做大型的服務開發的時候這幾乎是致命的.
3、查詢檔案組和檔案語句
這在2005下,運行
SELECT df.[name], df.physical_name, df.[size], df.growth, f.[name][filegroup], f.is_default FROM sys.database_files df JOIN sys.filegroups f ON df.data_space_id = f.data_space_id
4、MSDN官方解釋
瞭解檔案和檔案組
每個 SQL Server 資料庫至少具有兩個作業系統檔案:一個資料檔案和一個記錄檔。資料檔案包含資料和對象,例如表、索引、預存程序和視圖。記錄檔包含恢複資料庫中的所有事務所需的資訊。為了便於分配和管理,可以將資料檔案集合起來,放到檔案組中。
資料庫檔案
SQL Server 資料庫具有三種類型的檔案,如下表所示:
檔案 |
說明 |
主要 |
主要資料檔案包含資料庫的啟動資訊,並指向資料庫中的其他檔案。使用者資料和對象可儲存在此檔案中,也可以儲存在次要資料檔案中。每個資料庫有一個主要資料檔案。主要資料檔案的建議副檔名是 .mdf。 |
次要 |
次要資料檔案是可選的,由使用者定義並儲存使用者資料。通過將每個檔案放在不同的磁碟機上,次要檔案可用於將資料分散到多個磁碟上。另外,如果資料庫超過了單個 Windows 檔案的最大大小,可以使用次要資料檔案,這樣資料庫就能繼續增長。 次要資料檔案的建議副檔名是 .ndf。 |
交易記錄 |
交易記錄檔儲存用於恢複資料庫的日誌資訊。每個資料庫必須至少有一個記錄檔。交易記錄的建議副檔名是 .ldf。 |
例如,可以建立一個簡單的資料庫 Sales,其中包括一個包含所有資料和對象的主要檔案和一個包含交易記錄資訊的記錄檔。也可以建立一個更複雜的資料庫 Orders,其中包括一個主要檔案和五個次要檔案。資料庫中的資料和對象分散在所有六個檔案中,而四個記錄檔包含交易記錄資訊。
預設情況下,資料和交易記錄被放在同一個磁碟機上的同一個路徑下。這是為處理單磁碟系統而採用的方法。但是,在生產環境中,這可能不是最佳的方法。建議將資料和記錄檔放在不同的磁碟上。
檔案組
每個資料庫有一個主要檔案組。此檔案組包含主要資料檔案和未放入其他檔案組的所有次要檔案。可以建立使用者定義的檔案組,用於將資料檔案集合起來,以便於管理、資料分配和放置。
例如,可以分別在三個磁碟機上建立三個檔案 Data1.ndf、Data2.ndf 和 Data3.ndf,然後將它們分配給檔案組 fgroup1。然後,可以明確地在檔案組 fgroup1 上建立一個表。對錶中資料的查詢將分散到三個磁碟上,從而提高了效能。通過使用在 RAID(獨立磁碟容錯陣列)條帶集上建立的單個檔案也能獲得同樣的效能提高。但是,檔案和檔案組使您能夠輕鬆地在新磁碟上添加新檔案。
下表列出了儲存在檔案組中的所有資料檔案。
檔案組 |
說明 |
主要 |
包含主要檔案的檔案組。所有系統資料表都被分配到主要檔案組中。 |
使用者定義 |
使用者首次建立資料庫或以後修改資料庫時明確建立的任何檔案組。 |
預設檔案組
如果在資料庫中建立對象時沒有指定對象所屬的檔案組,對象將被分配給預設檔案組。不管何時,只能將一個檔案組指定為預設檔案組。預設檔案組中的檔案必須足夠大,能夠容納未分配給其他檔案組的所有新對象。
PRIMARY 檔案組是預設檔案組,除非使用 ALTER DATABASE 語句進行了更改。但系統對象和表仍然分配給 PRIMARY 檔案組,而不是新的預設檔案組。