文件和文件组简介
在SQL Server中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已。SQL Server通过管理逻辑上的文件组的方式来管理文件。
SQL Server通过文件组对数据文件进行管理。我们看到的逻辑数据库由一个或者多个文件组构成。
结构图如下:
文件组管理着磁盘上的文件,文件中存放的就是SQL Server的实际数据。
为什么通过文件组来管理文件
从用户的角度来说,创建对象时需要指定存储文件组的只有三种数据对象:表,索引和大对象(LOB)。
使用文件组可以隔离用户对文件的依赖,使得用户仅仅针对文件组来建立表和索引,而不用关心实际磁盘中的文件的情况。当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体文件,因此SQL Server可以放心的管理文件。
另外,使用文件组的方式来管理文件,可以使得同一文件组内的文件分布在不同的硬盘中,能够大大提供IO性能。
SQL Server根据每个文件设置的初始大小和增量值自动分配新加入的空间,假设在同一文件A设置的大小为文件B的两倍,新增一个数据占用3页,则按比例将2页分配到文件A中,1页分配到文件B中。
文件的分类
- 首要文件:这个文件是必须有的,而且只能有一个。这个文件额外存放了其他文件的位置等信息,扩展名为.mdf。
- 次要文件:可以建任意多个,用于不同目的存放,扩展名为.ndf。
- 日志文件:存放日志,扩展名为.ldf。
上面说的集中文件名扩展名可以任意修改,推荐使用默认的扩展名。在SQL Server之后,还新增了文件流数据文件和全文索引文件。
通过sys.database_files系统视图可以查看SQL Server数据库中文件的情况。
SELECT name,type_desc,physical_name,state_desc,size,growth FROM sys.database_files
结果如下:
注意type_desc列,首要文件和次要文件都是ROWS,表示存储的是行(Row)。
如果一个表是存在物理上的多个文件中时,则表的数据页的组织为N(N为具体的几个文件)个B树。而不是一个对象为一个B树。
创建和使用文件组
创建文件或是文件组合一通过在Management Studio或者使用T-SQL语句进行。对于一个数据库来说,既可以在创建时增加文件和文件组,也可以向现有的数据库添加文件和文件组。
创建文件组操作:
创建文件操作:
注意:文件的所属文件组一旦设置了就不能够更改了。
下面给出一个创建索引时,指定存放到文件组的SQL实例:
--添加索引时,指定存放的文件组 CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode) ON AddFileGroup --红色部分是主角,指定文件组。 --如果不指定文件组,则存放到默认的文件组当中 CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode)
使用多个文件的优点与缺点
在大多数情况下,小型的数据库并不需要创建多个文件来存放数据。但是随着数据的增长,单个文件的弊端就会出现。
- 首先,使用多个文件分布到不同的磁盘分区(多个硬盘)能够几大提高IO性能。
- 其次,多个文件对于数据比较多的数据库来说,备份和恢复都会方便。
- 但是,多文件需要占用更多的磁盘空间,因为每个文件中都有自己的一套B树组织方式和自己的增长空间。当然也有自己的碎片。
- 总体来说,多个文件带来的优点是远远大于弊端的。
相关推荐
1、文件和文件组的含义与关系 每个数据库有一个主数据文件.和若干个从文件。文件是数据库的物理体现。 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡。文件组允许对文件进行分组,以便于管理和数据的分配...
wampserver连接数据库sqlserver时的配置文件,
sqlserver 批量执行指定文件夹下面的sql文件。 非常快捷方便,使用于不同类型数据库之间的数据迁移
sql server 导入超大SQL脚本文件.doc 说明
sql server 下如何读写文件,在sql server下可以读写服务器文件
SQLSERVER将一个文件组的数据移动到另一个文件组.
SQL SERVER索引文件迁移到文件组,可以将索引和数据文件分在不同的文件组中,实现物理分离,便于管理
我们经常对文件组与文件的理解有误差,认为文件组是文件的组合,其实这种说法不一定正常。
sqlserver一般是用SSMS通过任务的使用bak文件或分离文件进行还原。但是对于少数有人使用backup命令将数据库备份为了dat文件,不知道怎样还原,这里提供使用dat文件恢复数据库完整语句 。
用sql server读取和写入excel文件,读取和写入数据非常方便,大批量数据导入与导出非常快
SqlServer2005 打开 SqlServer2008 mdf文件 数据库转换
将DBF文件导入到SQL server 数据库,并且导出到本地的excel
易写的从SQL SERVER 中导出image 类型文件到本地
发现Toad的很好用SQL Server数据库管理工具,特意制作成单文件,不用安装,直接管理。已经注册好了,可以直接使用。win7、8(64位)测试可行。 另:告诉大家一个快速进行软件注册的办法(win7、8下) 1、新建C:\...
SQLServer文件, 否则后果自负。作者不为您承担任何方面的任何责任。 SQL Server 2000绿色版注意事项 --------------------------- 1 本地连接服务器请使用界面中“服务器名”文本框中的文本作为服务器名连接...
使用文件组解决sql数据文件大的问题。提高对数据文件的访问。
sql server 2005导出sql文件工具 将数据库导出为sql文本文件 结合工具sqlcmd可以实现命令行下的数据库还原
SQLServer:超级实用 删除log文件和清空日志的方法
在sql server的字段中保存文件,文件大小没有限制。 字段类型2005以上是 varbinary(MAX),2000版本是image.
SQL Server安装文件挂起清理工具SQL Server安装文件挂起清理工具SQL Server安装文件挂起清理工具SQL Server安装文件挂起清理工具SQL Server安装文件挂起清理工具