1,文件组和文件的作用
Sql Server的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,Sql server通过文件组来管理文件。
一个DataBase有一个或多个FileGroup,PrimaryFileGroup是必需的,用户可以根据需要添加FileGroup。每一个FileGroup管理一个或多个文件,其中PrimaryFileGroup管理一个master data file,扩展名是.mdf,这个file是系统默认生成的;扩展名是.ndf的文件是用户根据需要添加的。
文件组管理着磁盘上的文件,文件中存放着SQL SERVER database的实际数据。
2,示例db
2.1示例db的FileGroup如下
Primary 是一个FileGroup,是个默认的文件组。如果在create table,create index中没有指定FileGroup,将使用Default FileGroup管理的文件来存储实际的数据。
2,每一个FileGroup都有相应的File,File是实际存储数据的物理实体。
File有两种类型,一种是存储数据的rows data,一种是存储日志的log。可以从path中找到磁盘上物理file。
File中存储的数据经过sql server的处理,存储的是sql server能够识别的格式化数据。
3,使用文件组管理文件的好处
在实际的开发过程中,user只需要关注逻辑对象FileGroup,而不用关心数据的物理存储,即使物理存储的file变更,也不影响应用程序。如果同一个FileGroup内的文件分布在不同的磁盘上,在读取数据时,Sql Server能同时从不同的磁盘上读取数据,极大的提高IO性能,这种实现方式是分区表实现的基础,分区表能够将不同的数据子集存储在不同的磁盘上。
Tsql 查看database的filegroup和file
select * FROM sys.database_files select * from sys.filegroups
4,使用文件组的情况
4.1 在创建表的时候,使用on子句指定FileGroup,那么该表的数据将存储在该FileGroup管理的File中。
CREATE TABLE [dbo].[student]( [stuid] [int] NOT NULL, [stuname] [varchar](100) NOT NULL, [professionid] [int] NULL,PRIMARY KEY CLUSTERED ( [stuid] ASC ) ) ON [PRIMARY]
4.2 在创建索引的时候,使用on子句指定FileGroup,那么该表的索引结构将存储在该FileGroup管理的File中。
CREATE NONCLUSTERED INDEX [idx_student_stuname] ON [dbo].[student]( [stuname] ASC ) ON [PRIMARY]