使用檔案與檔案群組

SQL Server 會將資料庫對應到一組作業系統檔案。資料與記錄資訊永遠不會混在同一個檔案中,並且個別的檔案只能用於一個資料庫中。檔案群組是具名的檔案集合,用來簡化資料放置與管理作業,例如備份和還原作業。如需詳細資訊,請參閱<檔案與檔案群組架構>。

檔案與檔案群組填滿策略

檔案群組針對每個檔案群組內的所有檔案,使用比例性的填滿策略。當資料寫入檔案群組時,SQL Server Database Engine 不會將所有資料都寫入第一個檔案,直到該檔案滿了為止;而是在檔案群組內的每一個檔案中,寫入與檔案可用空間等比例的量,然後再寫入下一個檔案。例如,若檔案 f1 有 100 MB 可用空間、檔案 f2 有 200 MB 可用空間,系統就會從檔案 f1 配置 1 份範圍,再從檔案 f2 配置 2 份範圍,其餘依此類推。如此一來,兩個檔案大約會在相同的時間填滿,而達成簡易等量配置。

檔案群組中的所有檔案都填滿之後,Database Engine 會以循環配置的方式,自動一次擴充一個檔案,以容納更多資料,但前提是資料庫必須設定為自動成長。例如,檔案群組由 3 個檔案組成,全部都設為自動成長。當檔案群組中所有檔案的空間都用完時,只會先擴充第 1 個檔案。當第 1 個檔案已滿,不能再寫入更多資料到檔案群組時,再擴充第 2 個檔案。當第 2 個檔案已滿,不能再寫入更多資料到檔案群組時,再擴充第 3 個檔案。如果第 3 個檔案已滿,不能再寫入更多資料到檔案群組時,再重新擴充第 1 個檔案,依此類推。

改進資料庫效能

使用檔案和檔案群組可改進資料庫效能,因為它可讓資料庫跨多個磁碟、多個磁碟控制卡或 RAID (磁碟陣列) 系統而建立。例如,若電腦有 4 個磁碟,您可以建立由 3 個資料檔和 1 個記錄檔組成的資料庫,每一個檔案各在一個磁碟上。存取資料時,4 個讀寫頭可同時平行存取資料。這樣可加速資料庫作業。如需硬體方案的詳細資訊,請參閱<資料庫效能>。

此外,檔案和檔案群組可啟用資料位置選項,因為資料表可建立在特定的檔案群組中。這樣可改進效能,因為特定資料表的所有 I/O 都可導向特定的磁碟。例如,使用量大的資料表可放在某個磁碟的某個檔案群組的一個檔案上,而資料庫中另一個較少存取的資料表可放在第 2 個磁碟的另一個檔案群組的其他檔案中。

實作備份和還原策略

由多個檔案群組構成的資料庫可以分階段還原,此程序叫做分次還原。分次還原適用於所有復原模式,但它對於完整模式和大量記錄模式,可以提供比簡單模式更大的彈性。分次還原實例包括全部 3 個還原階段:資料複製、重做或向前復原,以及恢復或回復。如需詳細資訊,請參閱<執行分次還原>。

使用多個檔案群組時,資料庫中的檔案可以個別備份和還原。在簡單復原模式下,只有唯讀檔案才允許檔案備份。使用檔案備份可以增加復原的速度,因為這樣可以讓您只還原受損的檔案,而不需要還原資料庫的其餘部分。例如,如果資料庫由數個檔案組成,這些檔案實際位於不同的磁碟上,現在有一個磁碟故障了,就只需還原故障磁碟上的檔案。如需詳細資訊,請參閱<BACKUP (Transact-SQL)>。

設計檔案與檔案群組的規則

下列規則是關於檔案和檔案群組:

  • 檔案或檔案群組無法由多個資料庫所使用。例如,sales.mdfsales.ndf 檔案包含來自 sales 資料庫的資料和物件,其他的資料庫並無法使用它們。

  • 檔案只能作為一個檔案群組的成員。

  • 交易記錄檔不能為任何檔案群組的一部分。

建議

以下是關於使用檔案和檔案群組時的一般建議:

  • 大多數的資料庫只需要一個資料檔和一個交易記錄檔即可順利運作。

  • 若使用多個檔案,可替額外的檔案建立第二個檔案群組,並讓該檔案群組成為預設的檔案群組。如此一來,主要檔案將只包含系統資料表和物件。

  • 若要使效能達到最大,請盡量在多個不同的本機實體磁碟上建立檔案或檔案群組。並把極佔空間的物件放在不同的檔案群組中。

  • 使用檔案群組,將物件放置在特定的實體磁碟上。

  • 將同一個聯結查詢用到的不同資料表,放在不同的檔案群組內。這樣可改進效能,因為可用平行磁碟 I/O 搜尋聯結資料。

  • 把存取量大的資料表和屬於這些資料表的非叢集索引,放在不同的檔案群組中。這樣可改進效能,因為檔案如果位於不同實體磁碟上,可進行平行 I/O。

  • 請勿將交易記錄檔放在有其他檔案和檔案群組的同一個實體磁碟上。