SQLserver 2005文件和文件组的作用说明_mssql2005

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 数据库具有三种类型的文件,如下所示
主要數據文件
主要数据文件包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。主要数据文件的建议文件扩展名是 .mdf.
次要数据文件
是可选的,由用户定义并存储用户数据。通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。另外,如果数据库超过了单个 Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。次要数据文件的建议文件扩展名是 .ndf。
事务日志文件
事务日志文件保存用于恢复数据库的日志信息。每个数据库必须至少有一个日志文件。事务日志的建议文件扩展名是 .ldf.
à文件组
每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。
例如,可以分别在三个磁盘驱动器上创建三个文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后将它们分配给文件组 fgroup1。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。通过使用在 RAID(独立磁盘冗余阵列)条带集上创建的单个文件也能获得同样的性能提高。但是,文件和文件组使您能够轻松地在新磁盘上添加新文件。
以下列出了存储在文件组中的所有数据文件。
主文件组
主要包含主要文件的文件组。所有系统表都被分配到主要文件组中。
用户定义文件組
用户首次创建数据库或以后修改数据库时明确创建的任何文件组
默认文件组
如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。
PRIMARY 文件组是默认文件组,除非使用 ALTER DATABASE 语句进行了更改。但系统对象和表仍然分配给 PRIMARY 文件组,而不是新的默认文件组。
5、操作实例

复制代码 代码如下:

--(5.1)创建数据库
--切换到 master 数据库
USE master
GO
create database db_Study
on primary --主文件组和主要数据文件
(name='db_study_Primary',
filename='D:\study\db_study_pri.mdf'),
filegroup db_Study_filegroup1 --用户定义文件组1
(name='db_study_fg_data1',
filename='D:\study\db_study_fg_data1_1.ndf'),--次要数据文件1
(name='db_study_fg_data2' ,
filename='D:\study\db_study_fg_data2_2.ndf'),--次要数据文件2
filegroup db_Study_filegroup2
(name='db_study_fg_data3',
filename='D:\study\db_study_fg_data3_1.ndf')
log on
(name='db_study_log',
filename='D:\study\db_study.ldf')
go
--5.2查询文件组和文件
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
/*
name physical_name size growth filegroup is_default
db_study_Primary D:\study\db_study_pri.mdf 280 128 PRIMARY 1
db_study_fg_data1 D:\study\db_study_fg_data1_1.ndf 128 128 db_Study_filegroup1 0
db_study_fg_data2 D:\study\db_study_fg_data2_2.ndf 128 128 db_Study_filegroup1 0
db_study_fg_data3 D:\study\db_study_fg_data3_1.ndf 128 128 db_Study_filegroup2 0
*/
--5.3修改默认数据文件组
alter database db_study
modify filegroup db_study_filegroup1 default
--5.4
--在默认文件组db_study_filegroup1创建表,
--并且指定图像数据保存在用户定义文件组db_study_filegroup1
create table my_test
(
ID int primary key,
[Name] varchar(10),
PIC image
)textimage_on db_study_filegroup2
--在用户定义文件组db_study_filegroup2上创建索引
create index ix_my_test on my_test(ID) on db_study_filegroup2
GO
--5.5将要删除数据文件db_study_fg_data1的数据转移到其他数据文件中,
--并且清空数据文件db_study_fg_data1
DBCC SHRINKFILE(db_study_fg_data1,EMPTYFILE)
go
--删除数据文件db_study_fg_data1
ALTER DATABASE DB_study
REMOVE FILE db_study_fg_data1
go

时间: 2024-11-22 22:03:31

SQLserver 2005文件和文件组的作用说明_mssql2005的相关文章

SqlServer 2005 T-SQL Query 学习笔记(3)_mssql2005

AD HOC PAGING: 就是指用页面的序号和页面的大小请求一个单独的页面.下面是例子. DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 2; WITH SalesCTE AS ( SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty FROM dbo.Sales ) SELECT rownu

SQL Server 2005查看文件及文件组的语句

SQL Server 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

不允许对文件或文件组进行备份,因为它没有联机

问题描述:对数据库执行完整备份时,报错.备份语句:use mastergobackup database xxxx_s to disk='F:\DBBACKUP\xxxx_S_20080124.bak';错误信息:消息 3007,级别 16,状态 1,第 1 行不允许对文件或文件组 "sysft_test" 进行备份,因为它没有联机.可以使用 FILEGROUP 或 FILE 子句执行 BACKUP,以限制在选项中只包括联机数据.消息 3007,级别 16,状态 1,第 1 行不允许对

SQL SERVER 文件和文件组_MsSql

1.文件和文件组的含义与关系       每个数据库有一个主数据文件.和若干个从文件.文件是数据库的物理体现. 文件组可以包括分布在多个逻辑分区的文件,实现负载平衡.文件组允许对文件进行分组,以便于管理和数据的分配/放置.例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf.Data2.ndf   和   Data3.ndf),并将这三个文件指派到文件组   fgroup1   中.然后,可以明确地在文件组   fgroup1   上创建一个表.对表中数据的查询将分散到三个磁盘上,因

MSSQL还原数据库失败 不能选择文件或文件组 Microsoft SQL Server,错误:3219

MSSQL还原数据库失败,提示如下: 还原对与服务器 失败.(Microsoft.SqlServer.Smo) 其它信息: ┃ ┗→执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionsInfo) ┃ ┗→不能选择文件或文件组"--"用于此操作. RESTORE DATABASE 正在异常终止.(Microsoft SQL Server, 错误:3219) 出现此错误时我的操作步骤为: 右击数据库>>任务>

向SQLServer数据库读写image文件

server|sqlserver|数据|数据库 用asp向SQLServer数据库读写image文件 一.发送image文件的表单 img_upload.asp 二.接受表单发过来的image文件 在img_upfile.asp文件中 通过以上代码后,image文件已经存在于变量mydata中 三.将image数据加入数据库中以上代码先判断数据库中id记录为newid的字段内有没有数据,如果有则用当前数据更新数据库,若没有则将数据插入. 请注意:newid在别的地方定义,读者不必理会 四.读取数

浅谈SQL Server中的高可用性(2) 文件与文件组

在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允许数据库依然保持部分在线,从而保证了高可用性. 文件和文件组 有关文件和文件组的基本概念,有很多文章已经阐述过了.这里我只是提一下,文件组作为SQL Server访问文件的一个抽象层而存在.因此SQL Server上所做的操作不是直接针对文件,而是针对文件组. 使用多个文件组和文件不仅仅是为了分散IO和提高

C盘里的文件夹各有什么作用

  Documents and Settings是什么文件? 答案:是系统用户设置文件夹,包括各个用户的文档.收藏夹.上网浏览信息.配置文件等. 补充:这里面的东西不要随便删除,这保存着所有用户的文档和账户设置,如果删除就会重新启动不能登陆的情况,尤其是里面的default user.all users.administrator和以你当前登陆用户名的文件夹. Favorites是什么文件? 答案:是收藏夹,存放你喜欢的网址.可以在其中放网址快捷方式和文件夹快捷方式,可以新建类别(文件夹). P

android dxf-谁知道android数据导出dxf文件,dxf组码5图元句柄怎么分配啊,不同对象写入时候总是有重复

问题描述 谁知道android数据导出dxf文件,dxf组码5图元句柄怎么分配啊,不同对象写入时候总是有重复 如果有做过完整的请帮忙提示下,谢了很急.如果有做过完整的请帮忙提示下,谢了很急. 解决方案 自己搞定了 解决方案二: 同样对这个问题有疑问,按什么样的原则分配呢,求指教