SQL Server中的文件组是什么意思?

SQL Server中的文件组是什么意思?,第1张

文件组就是一堆文件的一个总称,就像黑种人,白种人,黄种人,是一堆人的总称,但以颜色来标识,这就是逻辑上的分类,文件组也是一样只是逻辑上的分组,一个数据库可以看成很多个文件构成一差埋个逻辑空间,它的数据越存越多,加入新的文件就越来越多,这些文件就可以作为一个组来管理。

文件和文件组的含义与关系:

每个数据库有一个主数据文件.和若干个从文件。文件是数据库的物理体现。 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡。文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf和Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。在RAID(磁盘冗余阵列)条带集上创建单个文件也可以获得相同的性能改善。然而,文件和文件组使您得以在新磁盘上轻易地添加新文件。另外,如果数据库超过单个Microsoft Windows 文件的最大大小,则可以使用次要数据文件允许数据库继续增长。

文件、文件组在实践应用中常见的问题:

1、容易导致文件过大。

我们知道,mdf文件是数据库文件,这样的话也就意味着随着数据库的增大mdf就会相应的增大虚渣蚂,显然在现在的应用中数据膨胀是太常见的事情了,当你的应用变大后,mdf文件也会变大,然而windows对文件的大小是有要求的,这样的话很容易导致mdf文件达到windows所允许的文件大小的界限(于是数据库就崩溃了)。

2、没有利用到磁盘阵列。

大型的服务器好多都有磁盘阵列,你可以把磁盘阵列简单的假象成n个一块转动的磁盘,磁盘阵列的设计是希望通过多个磁盘的串联来得到更大的读写效率梁迟。但是如果你的数据库只有一个mdf文件(ldf文件暂时不考虑),那么你总是只能够利用这个磁盘阵列里面的一个磁盘而已。那样的话昂贵的磁盘阵列的效率就由并联变成串联了。试想如果我们能够让mdf分散成多个文件,比如说磁盘阵列上的每个磁盘中都分配一个文件,然后把mdf中的数据分散到各个文件中,我在读取的时候就是串联的读取了,这样就充分的利用了磁盘阵的存取效能。

文件与文件组的删除,如果因为以前的分区方案不合理,需要取消分区,或者按另外一种方式分区,就需要涉及到文件与文件组的删除 *** 作,如果没有掌握正确步骤,有时候可能无法删除,会提示你“文件不为空,无法删除”或者“文件组不为空,不能删除”等等,如果不知道技巧,会很郁闷!本人就曾经经历过这样的郁闷!在百度也没找到正确答案。

1、 文件的删除:首先要先清空文件里的数据,删除之前数据一定要记得先备份,可将数据复制到其他表,然后执行:

DBCC SHRINKFILE (FileName, EMPTYFILE)

文件中的内容删除后,再执行删除文件命令,DataBaseName表示数据名,FileName 表示文件名:

ALTER DATABASE [DataBaseName] REMOVE FILE FileName

2、文件组的删除:

当文件组的文件被删除后,按正常理解,应该就可以直接删除文件组,实际是不行的,你无法删除文件组谈御。

因为还有几个东西依赖文件组,一是分区模数方案旦侍首,二是使用该分区方案的分区表

所以要删除分区方案才能删除文件组。但要删除分区方案之前要先更改依赖它的分区表,使其不依赖它。

这个主要是更改分区表的分区列,使其不使用分区方案,如果实在不会更改,在表里数据已经备份的前提下,可以直接删除表来解决。

然后再删除分区表方案,最后就可以直接删除文件组了。

总结前面的删除过程:

1、修改分区表,使其不依赖分区方案。

2、删除分区方案(依赖要删除的文件组)。

DROP PARTITION SCHEME [Part_func_scheme_Name]

3、直接删除文件组。

ALTER DATABASE [DataBaseName] REMOVE FILEGROUP [FGName]

DataBaseName表示数据名,FGName 表示文件组名。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12228250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存