SQLServer數(shù)據(jù)庫文件組相關(guān)知識筆記
1、數(shù)據(jù)庫文件組概念
數(shù)據(jù)庫文件被組織在稱為“文件組”的邏輯組中。文件組是所創(chuàng)建對象(如表或索引)的目標(biāo)容器,對象數(shù)據(jù)將分散在其所在目標(biāo)文件組的文件中,文件組可以按你要求的方式來控制對象的物理位置。
每個數(shù)據(jù)庫有一個主文件組。主文件組包含主要數(shù)據(jù)文件和未放入其他文件組的所有次要文件。用戶可以創(chuàng)建自定義的文件組,用于將數(shù)據(jù)文件集合起來,這樣以便于后續(xù)管理、數(shù)據(jù)分配和放置。
2、文件組的工作機制
文件組對組內(nèi)的所有文件都使用按比例填充策略。將數(shù)據(jù)寫入文件組時,數(shù)據(jù)庫引擎會根據(jù)文件中的可用空間量將一定比例的數(shù)據(jù)寫入文件組中的每個文件,而不是將所有數(shù)據(jù)先寫滿第一個文件,然后再寫入下一個文件。例如,如果文件file1有100MB可用空間,文件file2有200 MB可用空間,則從文件f1中分配一個區(qū),從文件f2中分配兩個區(qū),依次類推。這樣,兩個文件幾乎同時填滿。
如果數(shù)據(jù)庫設(shè)置為自動增長,文件組中的所有文件一滿,數(shù)據(jù)庫引擎就自動按照循環(huán)方式一次擴展一個文件,以容納更多數(shù)據(jù)。
3、數(shù)據(jù)庫文件組的作用
改善數(shù)據(jù)庫的性能:允許跨多個磁盤、多個磁盤控制器或RAID (獨立磁盤冗余陣列)系統(tǒng)創(chuàng)建數(shù)據(jù)庫。當(dāng)對數(shù)據(jù)進行訪問時,多個讀/寫磁頭可以同時并行地訪問數(shù)據(jù)。從而加快數(shù)據(jù)庫操作的速度。
可以在特定的文件組中創(chuàng)建表:根據(jù)業(yè)務(wù)的需要,可以將特定表的所有I/O都定向到一個特定的磁盤。從而提高數(shù)據(jù)庫的性能。
4、數(shù)據(jù)庫文件組的設(shè)計原則
- 一個數(shù)據(jù)庫文件或文件組不能由多個數(shù)據(jù)庫使用。
- 一個數(shù)據(jù)庫文件只能屬于一個文件組。
- 數(shù)據(jù)和事務(wù)日志信息不能放在同一個文件或文件組。
- 事務(wù)日志文件不能屬于任何文件組。
5、數(shù)據(jù)庫文件組的使用建議
- 一般情況下數(shù)據(jù)庫在只有單個數(shù)據(jù)文件和單個事務(wù)日志文件的情況下性能良好。
- 如果使用多個數(shù)據(jù)庫文件的話,應(yīng)該為附加的數(shù)據(jù)庫文件創(chuàng)建第二個文件組,并將其設(shè)置為默認文件組。這樣,主文件將只包含系統(tǒng)表和對象。
- 要使性能最大化,需要盡可能多的不同的可用本地物理磁盤上創(chuàng)建文件或文件組。將爭奪磁盤空間最激烈的對象放在不同的文件組中
- 使用文件組將對象放置在特定的物理磁盤上。
- 將在同一鏈接查詢中使用的不同表置于不同的文件組中。由于采用并行磁盤I/O對連接數(shù)據(jù)進行搜索,可以改善數(shù)據(jù)庫性能。
- 將最常訪問的表和屬于這些表的非聚集索引置于不同的文件組中。如果文件位于不同的物理磁盤上,由于采用并行I/O,可以改善數(shù)據(jù)庫性能。
- 不要將事務(wù)日志文件置于其中已有其他文件和文件組的物理磁盤上。