Ⅰ 使用數據文件和文件組應該注意哪些問題
使用資料庫文件組應注意以下問題:
我們可以出於分配和管理的目的將資料庫文件分為多個組。在某些情況下,我們可以通過控制將數據和索引放置到專用磁碟上的專門文件組來改善性能。包含主數據文件的文件組被稱為主文件組。只有一個主文件組,如果在創建資料庫時不明確地指示將文件放到某個其他的文件組,所有的數據文件都會被放在主文件組中。
除了主文件組,資料庫還可以有一個或多個用戶定義的文件組。我們可以在CREATE DATABASE或ALTER DATABASE語句中使用FILEGROUP關鍵字來創建用戶定義的文件組。
注意不要混淆主文件組和主文件。
主文件總是在創建資料庫時第一個列出的文件,並且它的文件擴展名一般為.mdf。主文件的一個特點就是它指向master資料庫中的一張稱為sysfiles1的表,該表包含屬於這個資料庫的所有文件的信息。
主文件組是包含主文件的文件組。該文件組包含主數據文件和所有沒有放在其他專門文件組里的文件。系統表裡的所有頁面總是從主文件組里的文件中分配。
默認文件組
一個文件組總是會有一個DEFAULT屬性。注意DEFAULT是文件組的一個屬性而不是名字。在每個資料庫中只有一個文件組是默認文件組。默認情況下,主文件組同時也是默認文件組。資料庫所有者能夠使用ALTER DATABASE語句改變默認文件組。默認文件組包含沒有放在一個專門文件組里的全部的表和索引。
大多數SQL Server資料庫只有一個單獨的數據文件,該文件就在一個(默認的)文件組中。實際上,大多數用戶都對SQL Server是如何工作的了解不夠多,從而不知道文件組是什麼。用戶獲得了對資料庫更為精密的了解後,她也許會決定使用多個裝置來將一個資料庫的I/O分散開來。實現它最簡單的方法就是在一個RAID裝置上創建一個資料庫文件。不過那樣一來還是不需要使用文件組。隨著用戶對資料庫的精密性和復雜度的了解達到更高的水平,她也許會發現非常需要使用多個文件——也許是為了創建一個單個裝置不能提供足夠空間的資料庫。在這種情況下,她還是不需要使用文件組——她能夠使用一個CREATE DATABASE語句來完成這個目標,該語句帶的參數是一組位於不同驅動器上文件的列表。
更為資深的資料庫管理員也許會決定將不同的表分配到不同的驅動器上,或者使用SQL Server 2005的表和索引分區特性,只有這時才會用到文件組。他們可以使用SQL Server Management Studio中的對象瀏覽器來創建位於多個文件組上的資料庫。然後他們能夠右擊對象瀏覽器中的資料庫名稱並創建一個CREATE DATABASE命令腳本,該腳本包含所有文件組中的所有文件。它們能夠保存該腳本並在需要重建這個資料庫或創建一個類似的資料庫時重用該腳本。
.
你也許想知道為什麼會需要創建位於一個物理驅動器的多個文件之上的資料庫。
通常這樣做並不會對性能有所改善,但是它為我們在兩個重要的方面增加了靈活性。
首先,如果我們需要在磁碟損壞時從備份還原一個資料庫,那麼新的資料庫必須包
含與原來資料庫同樣數目的文件。例如,如果原來的資料庫由一個12GB的大型文件
組成,我們就需要將它還原到有著同樣大小文件的資料庫中。如果這時沒有另外一個
12GB的驅動器馬上可供使用,那麼我們就不能還原資料庫!然而,如果最初創建的
資料庫是在幾個較小的文件上的,那麼實際上我們就增加了還原期間的靈活性。我們
更可能找到幾個4GB的可用驅動器而不是一個大型的12GB驅動器。
其次,將資料庫分布到多個文件上,即使這些文件是在同一個驅動器上,也能夠為
我們帶來可以很方便地將資料庫遷移到不同驅動器上的靈活性。如果我們在將來改
變硬體配置,就可能會有這種需要。
分配有空間的對象(也就是表和索引)被創建在一個特殊的文件組之上。如果沒有指定文件組,它們會被創建在默認的文件組之上。當我們向存儲在某個特定的文件組上的對象增加空間時,數據會以按比例填充(proportional fill)的方式被存儲,這意味著如果在一個文件組中有一個文件的自由空間是另一個文件的兩倍,那麼每當從第二個文件分配一個區(extent)時,將會從第一個文件分配兩個區。在本章後面部分會有對區的更多討論。
我們也可以使用文件組來備份數據庫的一些部分。因為一張表是被創建在單個的文件組之上的,所以可以通過備份放置了一些表的文件組來選擇備份某一批關鍵表。我們也可以通過兩種方式來還原單個的文件或文件組。首先,我們可以對資料庫進行部分還原並且只是還原文件組的一個子集,該子集必須包括主文件組。一旦主文件組還原完畢,資料庫就馬上可用,但是只有在已還原的文件組上的對象才會可用。部分還原文件組的一個子集是對一個問題的解決方案。該問題就是如何允許非常大型的資料庫(VLDB,very large database)在限定的時間窗口內可用。
Ⅱ 資料庫中的文件組是神馬
SQL文件組就是文件的邏輯集合。它的目的是為了方便數據的管理和分配.文件組可以把指定是文件組合在一起。
在首次創建資料庫,或者以後將更多文件添加到資料庫時,可以創建文件組。但是,一旦將文件添加到資料庫,就不可能再將這些文件移到其它文件組。
一個文件不能是多個文件組的成員。表格、索引以及 text、ntext 和 image 數據可以與特定的文件組相關聯。這意味著它們的所有頁都將從該文件組的文件中分配。
有三種類型的文件組:
主文件組
這些文件組包含主數據文件以及任何其它沒有放入其它文件組的文件。系統表的所有頁都從主文件組分配。
用戶定義文件組
該文件組是用 CREATE DATABASE 或 ALTER DATABASE 語句中的 FILEGROUP 關鍵字,或在 SQL Server 企業管理器內的"屬性"對話框上指定的任何文件組。
默認文件組
默認文件組包含在創建時沒有指定文件組的所有表和索引的頁。在每個資料庫中,每次只能有一個文件組是默認文件組。如果沒有指定默認文件組,則默認文件組是主文件組。
最多可以為每個資料庫創建 32 767個文件組。文件組只能包含數據文件。事務日誌文件不能是文件組的一部分。
說明 文件組不能獨立於資料庫文件創建。文件組是在資料庫中對文件進行分組的一種管理機制。