1、文件和文件組的含義與關系
每個數據庫有一個主數據文件.和若干個從文件。文件是數據庫的物理體現。 文件組可以包括分布在多個邏輯分區(qū)的文件,實現負載平衡。文件組允許對文件進行分組,以便于管理和數據的分配/放置。例如,可以分別在三個硬盤驅動器上創(chuàng)建三個文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并將這三個文件指派到文件組 fgroup1 中。然后,可以明確地在文件組 fgroup1 上創(chuàng)建一個表。對表中數據的查詢將分散到三個磁盤上,因而性能得以提高。在 RAID(磁盤冗余陣列)條帶集上創(chuàng)建單個文件也可以獲得相同的性能改善。然而,文件和文件組使您得以在新磁盤上輕易地添加新文件。另外,如果數據庫超過單個 Microsoft Windows 文件的最大大小,則可以使用次要數據文件允許數據庫繼續(xù)增長。
2、文件、文件組在實踐應用中常見的問題
通常情況下我們構造的數據庫都只有兩個文件,mdf文件和ldf文件.但是這樣有兩個缺點:
(一)容易導致文件過大
我們知道,mdf文件是數據庫文件,這樣的話也就意味著隨著數據庫的增大mdf就會相應的增大,顯然在現在的應用中數據膨脹是太常見的事情了,當你的應用變大后,mdf文件也會變大,然而windows對文件的大小是有要求的,這樣的話很容易導致mdf文件達到windows所允許的文件大小的界限(于是數據庫就崩潰了)。
(二)沒有利用到磁盤陣列
大型的服務器好多都有磁盤陣列,你可以把磁盤陣列簡單的假象成n個一塊轉動的磁盤,磁盤陣列的設計是希望通過多個磁盤的串聯(lián)來得到更大的讀寫效率.但是如果你的數據庫只有一個mdf文件(ldf文件暫時不考慮),那么你總是只能夠利用這個磁盤陣列里面的一個磁盤而已.那樣的話昂貴的磁盤陣列的效率就由并聯(lián)變成串聯(lián)了.試想如果我們能夠讓mdf分散成多個文件,比如說磁盤陣列上的每個磁盤中都分配一個文件,然后把mdf中的數據分散到各個文件中,我在讀取的時候就是串聯(lián)的讀取了,這樣就充分的利用了磁盤陣的存取效能.
這兩個問題平常我們沒有遇到過(條件不具備),但是做大型的服務開發(fā)的時候這幾乎是致命的.
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 數據庫至少具有兩個操作系統(tǒng)文件:一個數據文件和一個日志文件。數據文件包含數據和對象,例如表、索引、存儲過程和視圖。日志文件包含恢復數據庫中的所有事務所需的信息。為了便于分配和管理,可以將數據文件集合起來,放到文件組中。
à數據庫文件
SQL Server 數據庫具有三種類型的文件,如下所示
主要