SQL Server数据架构创建之数据库文件的创建
一、数据库文件概念
数据库由两组文件组成:数据文件与事务日志文件。
1、数据文件:包含所有的系统及用户表、索引、视图、存储过程、用户定义函数、触
发器和安全权限等。
2、事务日志:包含用户及系统的写操作、不仅包含当前信息,还包含对数据文件所有
更新。
二、创建数据库的基本语法:
如测试代码:
create database 数据库物理名称
on
primary
(
name='数据库逻辑名称',
filename = '物理路径+主数据文件名称.mdf',
size=初始大小,
maxsize=最大大小,
filegrowth=增长大小
)
,
(
数据文件2
)
log on
(
name='数据库日志文件逻辑名称',
filename = '物理路径+日志文件名称.mdf',
size=初始大小,
maxsize=最大大小,
filegrowth=增长大小
)
,
(
日志文件2
)
三、配置文件增长:
1、启用自动增长:如果没有启用,当需要增长时,需要手工调整。
2、增长方式:按MB或按百分比。
3、最大文件大小:文件的最在空间
如测试代码:
create database NewDb
on
primary
(
name='newdb',
filename = 'e:\newdb.mdf',
size=10MB,
maxsize=2GB,
filegrowth=5
)
log on
(
name='newdblog',
filename = 'e:\newdb.ldf',
size=5MB,
maxsize=1GB,
filegrowth=10%
)
三、使用多个文件
数据和事务日志都可以存储在多个文件中,以提高性能和方便增长。
注:副(辅助)数据文件的默认扩展名为 .ndf
副日志文件的仍为 .ldf
同一个表的不同将插入到多个文件中,以均衡每个磁盘的I/0负载,用来提高性能。
如:
create database NewDb
on
primary
(
name='newdb',
filename = 'e:\newdb.mdf',
size=10MB,
maxsize=2GB,
filegrowth=5
)
,
(
name='newdb2',
filename = 'e:\newdb2.ndf'
)
log on
(
name='newdblog',
filename = 'e:\newdb.ldf',
size=5MB,
maxsize=1GB,
filegrowth=10%
)
,
(
name='newdblog2',
filename = 'e:\newdb2.ldf'
)
四、修改现有数据库的文件设置
1、添加新文件
alter database NewDb
add file
(
name='a',
filename='e:\a.ndf'
)
2、删除旧文件
alter database NewDb
remove file a
五、规划多个文件组
文件组是一种组织数据库对象的高级方法,默认情况下,数据库只有一个文件组
:主文件组
通过将数据库配置成包含多个文件组,可以在指定的文件级组中创建新
对象(如:表、索引等)
通过这种
技术可实现两种策略:
1、通过使用多个文件组,可将频繁使用的表或视图存储到多个磁盘子系统中,从而
提高性能。
2、通过使用多个文件组,可以将静态数据存储在一个文件组,将动态数据存储在其他
文件组中。
注:规划文件和文件组时,最好将每个文件放在不同的磁盘了系统中。
书中作者强烈建议在多个磁盘这间分担I/O负载。
1、创建使用文件组的数据库:
create database NewDb
on
primary --文件组1
(
name='newdb',
filename = 'e:\newdb.mdf',
size=10MB,
maxsize=2GB,
filegrowth=5
)
,
filegroup grouptwo --文件组2
(
name='newdb2',
filename = 'e:\newdb2.ndf'
)
log on
(
name='newdblog',
filename = 'e:\newdb.ldf',
size=5MB,
maxsize=1GB,
filegrowth=10%
)
,
(
name='newdblog2',
filename = 'e:\newdb2.ldf',
size=5MB,
maxsize=1GB,
filegrowth=10%
)
2、修改文件组
alter database newDB add filegroup groupthree
alter database newDB remove filegroup groupthree
六、删除数据库
Drop database newDB