【SQLSERVER】从数据库文件mdf中拆分ndf的方法和利弊

一、数据文件格式

     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文件,增加了数据库管理上的压力。

       

          

原文地址:https://www.cnblogs.com/TurboWay/p/5960587.html