一、數據文件格式
SQLSERVER中,數據庫的文件后綴有3種:mdf、ndf、ldf。
如下圖所示,DW_TEST.mdf、DW_TEST_HIS.ndf、DW_TEST.ldf 屬於同一個數據庫TEST。
其中 mdf 是主數據文件,每個數據庫有且只能有一個;ndf 是次要數據文件 ;ldf 是日志文件。
二、如何從主數據文件mdf中拆分出ndf
1,添加新文件組,創建ndf文件
1.1,右鍵數據庫 → 屬性 → 文件 → 添加文件
1.2,這邊新建一個HIS的文件組,對應的ndf命名為 DW_TEST_HIS。
2,這個時候,ndf文件已經生成,接下來就是根據需要把數據從DW_TEST.mdf 中移到 DW_TEST.ndf.
遷移數據到ndf有兩種方法:
一種是通過重新建表,把表的歸屬文件組改為ndf對應的文件組,這邊是HIS,然后把舊表的數據寫入新表。
另一種方式是通過,重建聚集索引的方式,將表的歸屬文件組改為 HIS,不再贅述。
三、拆分ndf的結果分析和利弊
建了一個測試數據庫DW_TEST2作為拆分對象,拆分的結果作為DW_TEST。再往兩個庫寫入一樣的數據,從下圖的結果可以看出 DW_TEST2.mdf(8.37G) 拆分成了 DW_TEST.mdf(4.06G) 和 DW_TEST_HIS.ndf(4.3G),算上日志文件,拆分前后,數據庫總大小不變。
優點:分出了一個ndf文件,可以放在別的硬盤,在存儲上起到一定程度的減壓,和提高I/0並發的優化作用,可以作為一種數據庫的優化策略;
缺點:多出一個ndf文件,增加了數據庫管理上的壓力。