您的位置:首页 > 数据库

sqlserver中文件组Filegroup的使用

2016-01-17 12:09 309 查看
转自:http://blog.sina.com.cn/s/blog_67f684100100ngoz.html

数据库的操作:

1. 对数据文件的操作(添加,删除,修改文件的初始大小,最大大小,步长)

2. 数据库文件的收缩

3. 数据库的只读/读写 read_only只读 read_write可读写 read_only表示只读 read_write表示可读可写

4. 数据库的限制访问(单用户,多用户,限制用户模式)

5.数据库脱机/联机 offline 脱机 alter database love set offline online 联机 alter database love set online

6. 数据库附加/分离。 sp_attach_db 附加 SP_detach_db 分离 附加 sp_attach_db 分离 sp_detach_db offline 脱机 online 联机

文件组:

文件组:对数据文件的管理单元,即文件的集合、

文件组的优势。

1. 对文件的管理,分类管理(将所有存放财务的数据放在一个文件组中,也可以所有关于人事的数据放在一个文件组).

2. 文件组增加数据读写的速度。

特点:

1. 一个数据库至少一个文件组,当数据库创建成功后,将自动创建文件组(primary文件组).

2. 文件组只能存放数据文件(mdf,ndf),ldf文件不能放入到文件组中.

3. 一旦文件加入到文件组,不能切换文件组了。

文件组的类型

1. 主文件组--无法删除。

1. primary 文件组

2. 系统创建的.

3. 存放两种类型的文件

1. 数据库mdf文件.

2. 存放没有单独指定文件组的文件,在添加ndf文件时,如果没有指定文件组,文件默认存放的文件组.---数据库中文件必须放在文件组中。

因为:数据库---文件组--文件。

2. 用户自定义文件组

1. 用户创建的.

2. 存放:当添加ndf文件时,明确指定文件组的文件.

3. 可以删除。

文件组是一个或多个文件的集合,是构成分配和数据管理的单个逻辑单元(是sqlserver中对多个物理数据文件的管理单位)

Sql服务器包括主文件组(系统自动创建的)和其他用户自定义的文件组

主文件组包括系统表的主数据文件(primary),他包括所有数据库中的系统表,以及所有没有在用户自定义的文件组中所指定的对象和数据, 一个数据库只有一个主文件组

用户自定义文件组包括出于分配和管理目的而分组的数据文件(ndf)

事务日志文件不能存放在任意一个文件组中

重点

文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。

如果文件组是由在不同物理磁盘中展开的多个文件组成,而且每个磁盘都有自己的磁盘控制器,则对表中数据的查询将在这些磁盘中展开,从而提高查询性能

问题:

1. 如何查看数据库中所有的文件组。

语法:sp_helpfilegroup

步骤:

use 数据库

sp_helpfilegroup

2. 如何找到文件组和文件的对应情况.

sp_helpdb love

创建文件组。

语法:

alter database 数据库名 add filegroup 文件组名

步骤:

use 数据库名

alter database 数据库名 add filegroup 文件组名

范例:

use love

alter database love add filegroup 财务部

将文件放入到文件组中

语法:

alter database 数据库名 add file(name='xxx',filename='文件的物理路径',

size='初始大小',maxsize="最大大小',filegrowth=步长) --添加文件,并且将文件放入到默认文件组(primary文件组)

alter database love

add file

(name='love_n1',filename='c:\love_n1.ndf')

alter database 数据库名 add file(name='xxx',filename='文件的物理路径',

size='初始大小',maxsize="最大大小',filegrowth=步长) to filegroup 文件组名

alter database love

add file

(name='love_n2',filename='c:\love_n2.ndf')

to filegroup 财务部

数据-->primary-->love文件和love_n1

数据-->财务部-->love_n2

问题:数据如何放入到文件组中。

数据库中利用表保存和处理数据

数据--表-->文件组--数据文件

指定表和文件组的关系

语法:

create table 表名(xxxxxx) on 文件组

步骤:

use 数据库

create table语法 on 表名

范例:

create table renshi(id int not null,

name varchar(50) not null, salary money not null)

on 财务部

1。创建数据库(nnn),如果存在,先删除,再创建.

2. 向数据库nnn添加文件组(f1)

3. 向数据库nnn添加文件,并且放在f1中。

4. 查询文件组f1中的文件情况.

5. 创建表,并制定放置f1中。

6. 查询表和文件组的关系。

范例:

create database nnn

use nnn

alter database nnn add filegroup f1

alter database nnn add file(name='kk',filename='d:\kk.ndf') to filegroup f1

sp_helpfilegroup f1

create table renshi(id int not null,

name varchar(50) not null, salary money not null) on f1

sp_help renshi



删除文件组。


语法:

alter database 数据库名 remove filegroup 文件组名

注意:

1. 删除所有放置在文件组中的表

2. 删除文件组中文件

sp_helpdb 数据库名

3. 删除文件组

范例:

drop table renshi

alter database love remove file love_n2

alter database love remove filegroup 财务部

在这里我申明一下 对于文件组来说: 对文件组的使用方法一定要步骤来实施,不然到时候删除回出错的,步骤如下:首先创建一个文件组然后创建一个辅助数据库文件

ndf 到文件组当中 然后创建一个表放到文件组的里面简写步骤就是: 文件组 ----> 文件(ndf)------表>

然后在删除的时候与创建的时候恰好相反 简写步骤是: 表--》文件---》文件组 记住千万不要搞错了哈!!不然删除的时候就会出现很多麻烦的啦!!!

问题:返回当前数据库中所有的表和文件组的对应关系。--查帮助文档。

创建表时,必须人工指定文件组,否则,默认放在primary文件组

假设,将所有创建的表都放置用户自定义文件组

问题:每次创建表时,必须人工指定,否则到primary文件组,如果创建时,忘记设置,则必须删除表,重新创建

数据库的默认文件组

默认文件组:在创建表时,不指定文件组,即表默认属于的文件组,默认情况下,primary文件组为数据库的默认文件组.

修改数据库的默认文件组:

语法:

alter database 数据库名 modify filegroup 文件组名 default

步骤:

use 数据库名

alter database语法:

注意:设置为默认文件组的文件组中必须包含至少一个文件。

范例:

alter database love

add filegroup 人事部

alter database love

add file

(name='love_n2',filename='c:\love_n2.ndf')

to filegroup 人事部

use love

alter database love modify filegroup 人事部 default

create table renshi

(id int,name varchar(50))

sp_help renshi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: