文件组就是一堆文件的一个总称,就像黑种人,白种人,黄种人,是一堆人的总称,但以颜色来标识,这就是逻辑上的分类,文件组也是一样只是逻辑上的分组,一个数据库可以看成很多个文件构成一个逻辑空间,它的数据越存越多,加入新的文件就越来越多,这些文件就可以作为一个组来管理。
文件和文件组的含义与关系:
每个数据库有一个主数据文件.和若干个从文件。文件是数据库的物理体现。 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡。文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf和Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。在RAID(磁盘冗余阵列)条带集上创建单个文件也可以获得相同的性能改善。然而,文件和文件组使您得以在新磁盘上轻易地添加新文件。另外,如果数据库超过单个Microsoft Windows 文件的最大大小,则可以使用次要数据文件允许数据库继续增长。
文件、文件组在实践应用中常见的问题:
1、容易导致文件过大。
我们知道,mdf文件是数据库文件,这样的话也就意味着随着数据库的增大mdf就会相应的增大,显然在现在的应用中数据膨胀是太常见的事情了,当你的应用变大后,mdf文件也会变大,然而windows对文件的大小是有要求的,这样的话很容易导致mdf文件达到windows所允许的文件大小的界限(于是数据库就崩溃了)。
2、没有利用到磁盘阵列。
大型的服务器好多都有磁盘阵列,你可以把磁盘阵列简单的假象成n个一块转动的磁盘,磁盘阵列的设计是希望通过多个磁盘的串联来得到更大的读写效率。但是如果你的数据库只有一个mdf文件(ldf文件暂时不考虑),那么你总是只能够利用这个磁盘阵列里面的一个磁盘而已。那样的话昂贵的磁盘阵列的效率就由并联变成串联了。试想如果我们能够让mdf分散成多个文件,比如说磁盘阵列上的每个磁盘中都分配一个文件,然后把mdf中的数据分散到各个文件中,我在读取的时候就是串联的读取了,这样就充分的利用了磁盘阵的存取效能。
Microsoft® SQL Server™ 2000使用一组 *** 作系统文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在下列 *** 作系统文件中:
主要
该文件包含数据库的启动信息,并用于存储数据。每个数据库都有一个主要数据文件。
次要
这些文件含有不能置于主要数据文件中的所有数据。如果主文件可以包含数据库中的所有数据,那么数据库就不需要次要数据文件。有些数据库可能足够大故需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘。
事务日志
这些文件包含用于恢复数据库的日志信息。每个数据库都必须至少有一个日志文件。
例如,创建简单的数据库 sales
时,可以只使用一个包含所有数据和对象的主文件和一个包含事务日志信息的日志文件。另一种情况是,创建更复杂的数据库 orders
时,可以使用一个主文件和五个辅助文件,数据库内的数据和对象扩展到所有的六个文件中,另外有四个日志文件包含事务日志信息。
文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf
和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组 fgroup1
上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。在
RAID(独立磁盘冗余阵列)条带集上创建单个文件也可以获得相同的性能改善。然而,文件和文件组使您得以在新磁盘上轻易地添加新文件。另外,如果数据库超过单个
Microsoft Windows NT® 文件的最大大小,则可以使用次要数据文件允许数据库继续增长。
文件和文件组的设计规则
文件和文件组的设计规则包括:
文件或文件组不能由一个以上的数据库使用。例如,文件 sales.mdf 和 sales.ndf 包含 sales
数据库中的数据和对象,任何其它数据库都不能使用这两个文件。
文件只能是一个文件组的成员。
数据和事务日志信息不能属于同一文件或文件组。
事务日志文件不能属于任何文件组。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)