一,创建数据库
1,在创建数据库时,最佳实践是:
创建一个或多个文件组,并设置默认文件组
每个文件组中的数据文件和CPU的内核数据相同,将 文件均匀分布在不同的物理硬盘上,使IO均匀分布在不同的物理磁盘上;
数据文件的初始大小,文件增长和最大大小保持一致,这样,能够使每个文件的IO次数相对均匀;
日志文件分配在性能最好的物理硬盘上,写日志的性能直接影响数据修改的性能;
在创建文件时,为每个文件分配足够大的初始空间,避免数据文件size的增长
创建数据库的示例:
create database newdb on primary (name='newdb', filename='D:\MSSQLServer\newdb.mdf', size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_1',filename='D:\MSSQLServer\newdb_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_2',filename='D:\MSSQLServer\newdb_2.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_3',filename='D:\MSSQLServer\newdb_3.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_4',filename='D:\MSSQLServer\newdb_4.ndf',size=1GB,maxsize=10GB,filegrowth=1GB) log on (name='newdb_log',filename='D:\MSSQLServer\newdb_log.ldf',size=1GB,maxsize=10GB,filegrowth=1GB) go |
参数name指定逻辑文件名(logical_file_name),参数FileName指定物理文件名,SQL Server通过逻辑文件名引用数据文件或日志文件。
2,查看当前数据库的文件
use newdb go select df.file_id, df.type, df.type_desc, df.name, df.physical_name, df.state, df.state_desc, df.size*8/1024/1024 as size_gb, df.max_size*8/1024/1024 as max_size_gb, df.growth, df.is_percent_growth, fg.name as filegroup_name, fg.is_default from sys.database_files df inner join sys.filegroups fg on df.data_space_id=fg.data_space_id |
3,查看所有数据库的文件
select DB_NAME(mf.database_id) as dbname, mf.file_id, mf.type as file_type, mf.type_desc, mf.data_space_id as file_group, mf.name as logical_file_name, mf.physical_name, mf.state_desc, mf.size*8/1024/1024 as size_gb, mf.max_size*8/1024/1024 as max_size_gb, mf.growth, mf.is_percent_growth from sys.master_files mf --where database_id=db_id('newdb') |
二,增加数据/日志文件
1,增加文件组(File Group)
use master
go
alter database newdb
add filegroup fg_newdb1;
2,向fg_newdb1文件组(File Group)中增加数据文件
alter database newdb
add file
(name=fg_newdb1_1,filename ='d:\MSSQLServer\fg_newdb1_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB)
to filegroup fg_newdb1;
3,增加日志文件
alter database newdb
add log file
(name=newdb_log_1,filename ='d:\MSSQLServer\newdb_log_1.ldf',size=1GB,maxsize=10GB,filegrowth=1GB);