文件和文件組填充策略 文件組對組內的所有文件都使用按比例填充策略。當數據寫入文件組時,SQL Server 資料庫引擎按文件中的可用空間比例將數據寫入文件組中的每個文件,而不是將所有數據都寫入第一個文件直至其變滿為止。然後再寫入下一個文件。例如,如果文件 f1 有 100 MB 可用空間,文件 f2 ...
文件和文件組填充策略
文件組對組內的所有文件都使用按比例填充策略。當數據寫入文件組時,SQL Server 資料庫引擎按文件中的可用空間比例將數據寫入文件組中的每個文件,而不是將所有數據都寫入第一個文件直至其變滿為止。然後再寫入下一個文件。例如,如果文件 f1 有 100 MB 可用空間,文件 f2 有 200 MB 可用空間,則從文件 f1 中分配一個區,從文件 f2 中分配兩個區,依此類推。這樣,兩個文件幾乎同時填滿,並且可獲得簡單的條帶化。
假定將資料庫設置為自動增長,則當文件組中的所有文件填滿後,資料庫引擎便會採用迴圈方式一次自動擴展一個文件以容納更多數據。例如,某個文件組由三個文件組成,它們都設置為自動增長。當文件組中所有文件的空間都已用完時,只擴展第一個文件。當第一個文件已滿,無法再向文件組中寫入更多數據時,將擴展第二個文件。當第二個文件已滿,無法再向文件組中寫入更多數據時,將擴展第三個文件。當第三個文件已滿,無法再向文件組中寫入更多數據時,將再次擴展第一個文件,依此類推。
改善資料庫性能使用文件和文件組可以改善資料庫的性能,因為這樣允許跨多個磁碟、多個磁碟控制器或 RAID(獨立磁碟冗餘陣列)系統創建資料庫。例如,如果電腦上有四個磁碟,那麼可以創建一個由三個數據文件和一個日誌文件組成的資料庫,每個磁碟上放置一個文件。在對數據進行訪問時,四個讀/寫磁頭可以同時並行地訪問數據。這樣可以加快資料庫操作的速度。有關硬體解決方案的詳細信息,請參閱資料庫性能。
另外,文件和文件組還允許數據佈局,因為可以在特定的文件組中創建表。這樣可以改善性能,因為可以將特定表的所有 I/O 都定向到一個特定的磁碟。例如,可以將最常用的表放在一個文件組的一個文件中,該文件組位於一個磁碟上;而將資料庫中其他不常訪問的表放在另一個文件組的其他文件中,該文件組位於第二個磁碟上。
實現備份和還原策略可以通過稱為段落還原的進程分階段還原由多個文件組組成的資料庫。段落還原適用於所有恢復模式,但在完整恢復模式和大容量日誌恢復模式下比在簡單恢復模式下更靈活。段落還原方案包括還原的全部三個階段:數據複製、重做或前滾以及撤消或後滾。有關詳細信息,請參閱執行段落還原。
當使用多個文件組時,可以分別備份和還原資料庫中的文件。在簡單恢復模式下,只能對只讀文件進行文件備份。使用文件備份使您能夠只還原損壞的文件,而不用還原資料庫的其餘部分,從而加快了恢復速度。例如,如果一個資料庫由幾個分別位於不同的物理磁碟上的文件組成,當其中一個磁碟發生故障時,只需還原發生故障的磁碟上的文件。有關詳細信息,請參閱 BACKUP (Transact-SQL)。
文件和文件組的設計規則下列規則適用於文件和文件組:
-
一個文件或文件組不能由多個資料庫使用。例如,任何其他資料庫都不能使用包含 sales 資料庫中的數據和對象的文件 sales.mdf 和 sales.ndf。
-
一個文件只能是一個文件組的成員。
-
事務日誌文件不能屬於任何文件組。
下麵是使用文件和文件組時的一些一般建議:
-
大多數資料庫在只有單個數據文件和單個事務日誌文件的情況下性能良好。
-
如果使用多個文件,請為附加文件創建第二個文件組,並將其設置為預設文件組。這樣,主文件將只包含系統表和對象。
-
若要使性能最大化,請在儘可能多的不同的可用本地物理磁碟上創建文件或文件組。將爭奪空間最激烈的對象置於不同的文件組中。
-
使用文件組將對象放置在特定的物理磁碟上。
-
將在同一聯接查詢中使用的不同表置於不同的文件組中。由於採用並行磁碟 I/O 對聯接數據進行搜索,所以性能將得以改善。
-
將最常訪問的表和屬於這些表的非聚集索引置於不同的文件組中。如果文件位於不同的物理磁碟上,由於採用並行 I/O,所以性能將得以改善。
-
請勿將事務日誌文件置於其中已有其他文件和文件組的物理磁碟上。