现在的位置: 首页 > 综合 > 正文

sql server 2005 中文件组的的概念及数据库文件因文件组满而无法写入的数据的解决方法

2013年08月23日 ⁄ 综合 ⁄ 共 1928字 ⁄ 字号 评论关闭

sql server 2005 中的文件组

每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。

例如,可以分别在三个磁盘驱动器上创建三个文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后将它们分配给文件组 fgroup1。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。通过使用在 RAID(独立磁盘冗余阵列)条带集上创建的单个文件也能获得同样的性能提高。但是,文件和文件组使您能够轻松地在新磁盘上添加新文件。
SQL Server 2005 将数据库映射为一组操作系统文件。数据和日志信息绝不混合在同一个文件中,而且一个文件只由一个数据库使用。文件组是文件的命名集合,用于简化数据存放和管理任务(例如,备份和还原操作)。

文件和文件组填充策略
文件组对组内的所有文件都使用按比例填充策略。将数据写入文件组时,数据库引擎会根据文件中的可用空间量将一定比例的数据写入文件组中的每个文件,而不是将所有数据先写满第一个文件,然后再写入下一个文件。例如,如果文件 f1 有 100 MB 可用空间,文件 f2 有 200 MB 可用空间,则从文件 f1 中分配一个区,从文件 f2 中分配两个区,依此类推。这样,两个文件几乎同时填满,并且可获得简单的条带化。

文件组中的所有文件一满,数据库引擎就自动按照循环方式一次扩展一个文件,以容纳更多数据(假定数据库设置为自动增长)。例如,某个文件组由三个文件组成,它们都设置为自动增长。当文件组中所有文件的空间都已用完时,只扩展第一个文件。当第一个文件已满,无法再向文件组中写入更多数据时,将扩展第二个文件。当第二个文件已满,无法再向文件组中写入更多数据时,将扩展第三个文件。当第三个文件已满,无法再向文件组中写入更多数据时,将再次扩展第一个文件,依此类推。

改善数据库性能
使用文件和文件组可以改善数据库的性能,因为这样允许跨多个磁盘、多个磁盘控制器或 RAID(独立磁盘冗余阵列)系统创建数据库。例如,如果计算机上有四个磁盘,那么可以创建一个由三个数据文件和一个日志文件组成的数据库,每个磁盘上放置一个文件。在对数据进行访问时,四个读/写磁头可以同时并行地访问数据。这样可以加快数据库操作的速度。有关硬件解决方案的详细信息,请参阅数据库性能。

另外,文件和文件组还允许数据布局,因为可以在特定的文件组中创建表。这样可以改善性能,因为可以将特定表的所有 I/O 都定向到一个特定的磁盘。例如,可以将最常用的表放在一个文件组的一个文件中,该文件组位于一个磁盘上;而将数据库中其他不常访问的表放在另一个文件组的其他文件中,该文件组位于第二个磁盘上。

实现备份和还原策略
在 SQL Server 2005 中,可以通过称为段落还原的进程分阶段还原由多个文件组组成的数据库。段落还原适用于所有恢复模式,但在完整恢复模式和大容量日志恢复模式下比在简单恢复模式下更灵活。段落还原方案包括还原的所有三个阶段:数据复制、重做或前滚、撤消或回滚。有关详细信息,请参阅执行段落还原。

当使用多个文件组时,可以分别备份和还原数据库中的文件。在简单恢复模式下,只能对只读文件进行文件备份。使用文件备份使您能够只还原损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。例如,如果一个数据库由几个分别位于不同的物理磁盘上的文件组成,当其中一个磁盘发生故障时,只需还原发生故障的磁盘上的文件。

文件和文件组的设计规则
下列规则适用于文件和文件组:

一个文件或文件组不能由多个数据库使用。例如,任何其他数据库都不能使用包含 sales 数据库中的数据和对象的文件 sales.mdf 和 sales.ndf。
一个文件只能是一个文件组的成员。
数据和事务日志信息不能属于同一个文件或文件组。
事务日志文件不能属于任何文件组。

建议
大多数数据库在只有单个数据文件和单个事务日志文件的情况下性能良好。
如果使用多个文件,请为附加文件创建第二个文件组,并将其设置为默认文件组。这样,主文件将只包含系统表和对象。
若要使性能最大化,请在尽可能多的不同的可用本地物理磁盘上创建文件或文件组。将争夺空间最激烈的对象置于不同的文件组中。
使用文件组将对象放置在特定的物理磁盘上。
将在同一联接查询中使用的不同表置于不同的文件组中。由于采用并行磁盘 I/O 对联接数据进行搜索,所以性能将得以改善。
将最常访问的表和属于这些表的非聚集索引置于不同的文件组中。如果文件位于不同的物理磁盘上,由于采用并行 I/O,所以性能将得以改善。
请勿将事务日志文件置于其中已有其他文件和文件组的物理磁盘上。 

抱歉!评论已关闭.