SQL Server 文件和文件组
感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧! 1、文件和文件组的含义与关系 每个数据库有一个主数据文件.和若干个从文件。文件是数据库的物理体现。 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡。文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。在 RAID(磁盘冗余阵列)条带集上创建单个文件也可以获得相同的性能改善。然而,文件和文件组使您得以在新磁盘上轻易地添加新文件。另外,如果数据库超过单个 Microsoft Windows 文件的最大大小,则可以使用次要数据文件允许数据库继续增长。 2、文件、文件组在实践应用中常见的问题
通常情况下我们构造的数据库都只有两个文件,mdf文件和ldf文件.但是这样有两个缺点: (一)容易导致文件过大 我们知道,mdf文件是数据库文件,这样的话也就意味着随着数据库的增大mdf就会相应的增大,显然在现在的应用中数据膨胀是太常见的事情了,当你的应用变大后,mdf文件也会变大,然而windows对文件的大小是有要求的,这样的话很容易导致mdf文件达到windows所允许的文件大小的界限(于是数据库就崩溃了)。 (二)没有利用到磁盘阵列 大型的服务器好多都有磁盘阵列,你可以把磁盘阵列简单的假象成n个一块转动的磁盘,磁盘阵列的设计是希望通过多个磁盘的串联来得到更大的读写效率.但是如果你的数据库只有一个mdf文件(ldf文件暂时不考虑),那么你总是只能够利用这个磁盘阵列里面的一个磁盘而已.那样的话昂贵的磁盘阵列的效率就由并联变成串联了.试想如果我们能够让mdf分散成多个文件,比如说磁盘阵列上的每个磁盘中都分配一个文件,然后把mdf中的数据分散到各个文件中,我在读取的时候就是串联的读取了,这样就充分的利用了磁盘阵的存取效能. 这两个问题平常我们没有遇到过(条件不具备),但是做大型的服务开发的时候这几乎是致命的. 3、查询文件组和文件语句
这在2005下,运行
SELECT df.[name],df.physical_name,df.[size],df.growth,f.[name][filegroup],f.is_default FROM sys.database_files df JOIN sys.filegroups f ON df.data_space_id = f.data_space_id
4、MSDN官方解释 了解文件和文件组
每个 SQL Server 数据库至少具有两个操作系统文件:一个数据文件和一个日志文件。数据文件包含数据和对象,例如表、索引、存储过程和视图。日志文件包含恢复数据库中的所有事务所需的信息。为了便于分配和管理,可以将数据文件集合起来,放到文件组中。 【图片暂缺】 数据库文件SQL Server 数据库具有三种类型的文件,如下表所示: | 文件 | 说明 | 文件组 | 说明 |
---|
- 深入分析MySQL Sending data查询慢问题
- sqlserver2005 分页 SQL语句
- SQL查询多个数据库
- 我如何在SQL Server Express数据库中创建一个用户,我添加到
- 使用TSQL,我可以将CHAR(1)列递增1并在没有CASE语句的LEFT O
- sql-server – System Center Service Manager 2012的SQL S
- 关于Sqlserver2008,修改数据表无法保存的问题
- sqlserver带输入输出存储过程
- sqlserver排序规则&小数位精度不能自动截断的异常
- sql – 大的性能差异:使用sysdate vs使用预先格式化的日期