sql server数据库创建多个文件组与物理磁盘的方法

发布时间:2020-06-26编辑:脚本学堂
有关sql server数据库创建时,创建多个文件组与分配到多个物理磁盘的方法,基于性能优化的考虑,可以使用sql数据库文件组来保存数据库文件,并分散到多个磁盘上,性能会提升不少。

在sql server数据库部署时,服务器的瓶颈主要是15000转的硬盘无法满足日益增长的I/O需求,可以考虑将创建数据库时要尽量将数据库的I/O压力分解到多个磁盘中。

下面来看下sql server数据库创建多个文件组与物理磁盘的方法。

1、数据库文件组创建
 

复制代码 代码示例:
use master
go 
if DB_ID(N'care365') is not null--如果数据库存在,则删除它 
drop database care365 
go 
create database care365 
on primary 

name=care1, 
filename='C:/database/care365.mdf',--主文件组放在C盘下 
size=10MB, 
filegrowth=15% 

,filegroup caregroup1 

name=care2, 
filename='D:/database/care365_group1.ndf',--在D盘上创建一个文件组 
size=10MB, 
filegrowth=15%


filegroup caregroup2--该文件组分布在D和E两个盘符下 

name=care3, 
filename='D:/database/care365_group2.ndf', 
size=10MB, 
filegrowth=15% 



name=care4, 
filename='E:/database/care365_group2.ndf', 
size=10MB, 
filegrowth=15% 

log on 

name=care_log, 
filename='c:/database/care365.ldf',--将日志文件放到C盘下 
size=10MB, 
filegrowth=15% 

go 

2、数据库创建好之后,由于是实验用,设置自动关闭,节约资源
 

复制代码 代码示例:
alter database care365 
set auto_close on 
go 

3、添加数据库中的表和实验数据
 

复制代码 代码示例:
use care365 
go 
if OBJECT_ID(N'Customer') is not null 
drop table dbo.customer 
go 
create table dbo.Customer 

ID UNIQUEIDENTIFIER  ROWGUIDCOL PRIMARY  KEY  NOT NULL CONSTRAINT DF_Customer_id DEFAULT (NEWSEQUENTIALID()), 
Name nvarchar(50) not null, 
number nvarchar(50) not null constraint DF_Student_Number default (N'无') 

on caregroup1; 
go 
insert dbo.Customer (Name,number) values (N'张三',N'001') 
insert dbo.Customer (Name,number) values (N'李四',N'002') 
insert dbo.Customer (Name,number) values (N'王五',N'003') 
insert dbo.Customer (Name,number) values (N'赵六',N'004') 
go 
select * from dbo.Customer 
 
if OBJECT_ID(N'Product') is not null 
drop table dbo.Product 
go 
create table dbo.Product 

ID UNIQUEIDENTIFIER  ROWGUIDCOL PRIMARY  KEY  NOT NULL CONSTRAINT DF_Product_id DEFAULT (NEWSEQUENTIALID()), 
Name nvarchar(512) not null, 
Code nvarchar(50)  not null constraint DF_Product_Code default (N'无'), 
Price money not null constraint DF_product_price default ((0)) 

on caregroup1 
go 
 
insert dbo.Product (Name,Code,Price) values (N'奥迪 A4L 2010款 3.2FSI quattro 旗舰型',N'Audi_A4L_3.2FSI_quattro',57.81*10000) 
insert dbo.Product (Name,Code,Price) values (N'奥迪 A6L 2010款 3.0TFSI quattro 豪华型',N'Audi_A6L_3.0TFSI_quattro',69.60*10000) 
insert dbo.Product (Name,Code,Price) values (N'奥迪 A8L 2009款 6.0L quattro 专享尊崇型',N'Audi_A8L_6.0_quattro',291*10000) 
insert dbo.Product (Name,Code,Price) values (N'奥迪 Q5 2010款 2.0TFSI 豪华型',N'Audi_Q5_2.0TFSI',60.39*10000) 
insert dbo.Product (Name,Code,Price) values (N'奥迪 Q7 2010款 4.2FSI quattro 豪华型',N'Audi_Q7_4.2FSI_quattro',145*10000) 
go 
select * from dbo.Product 
 
if OBJECT_ID(N'Orders') is not null 
drop table dbo.Orders 
go 
create table dbo.Orders 

ID UNIQUEIDENTIFIER  ROWGUIDCOL PRIMARY  KEY  NOT NULL CONSTRAINT DF_Orders_id DEFAULT (NEWSEQUENTIALID()), 
CreateTime datetime not null constraint DF_Orders_CreateTime default(getdate()), 
CustomerID UNIQUEIDENTIFIER not null 

on caregroup2 
go 
 
insert dbo.Orders (CustomerID) values ('00AC9FF3-348C-DF11-A98B-001E37DA94AB') 
insert dbo.Orders (CustomerID) values ('01AC9FF3-348C-DF11-A98B-001E37DA94AB') 
insert dbo.Orders (CustomerID) values ('02AC9FF3-348C-DF11-A98B-001E37DA94AB') 
insert dbo.Orders (CustomerID) values ('03AC9FF3-348C-DF11-A98B-001E37DA94AB') 
go 
 
select * from dbo.Orders 
 
if OBJECT_ID(N'OrderInfo') is not null 
drop table dbo.OrderInfo 
go 
create table dbo.OrderInfo 

ID UNIQUEIDENTIFIER  ROWGUIDCOL PRIMARY  KEY  NOT NULL CONSTRAINT DF_OrderInfo_id DEFAULT (NEWSEQUENTIALID()), 
OrdersID UNIQUEIDENTIFIER not null, 
ProductID UNIQUEIDENTIFIER not null, 
Price money not null constraint DF_OrderInfo_Price default ((0)), 
Quantity int not null constraint DF_OrderInfo_Quantity default((0)) 

on caregroup2 
go 
 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0A2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0AF16B9C-A28C-DF11-9EB4-001E37DA94AB',578100.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0B2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0AF16B9C-A28C-DF11-9EB4-001E37DA94AB',578100.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0B2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0BF16B9C-A28C-DF11-9EB4-001E37DA94AB',696000.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0C2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0AF16B9C-A28C-DF11-9EB4-001E37DA94AB',578100.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0C2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0BF16B9C-A28C-DF11-9EB4-001E37DA94AB',696000.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0C2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0CF16B9C-A28C-DF11-9EB4-001E37DA94AB',2910000.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0D2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0AF16B9C-A28C-DF11-9EB4-001E37DA94AB',578100.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0D2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0CF16B9C-A28C-DF11-9EB4-001E37DA94AB',2910000.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0D2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0DF16B9C-A28C-DF11-9EB4-001E37DA94AB',603900.00,1) 
insert dbo.OrderInfo (OrdersID,ProductID,Price,Quantity) values ('0D2E2E09-AA8C-DF11-9EB4-001E37DA94AB','0EF16B9C-A28C-DF11-9EB4-001E37DA94AB',1450000.00,1) 
go 
 
select * from dbo.OrderInfo