当前位置:文档之家› 实验5 数据库监视与性能优化

实验5 数据库监视与性能优化

实验项目名称:数据库监视与性能优化实验学时: 4
同组学生姓名:实验地点:
实验日期:实验成绩:
批改教师:批改时间:
一、实验目的和要求
1、利用索引优化查询性能、优化SQL语句。

2、了解通过对SQL profiler跟踪系统运行数据。

二、实验仪器和设备
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机;
环境:WINDOWS 7 或WINDOWS XP、Microsoft SQL Server 2008。

三、实验过程
1、完成以下的实验。

1)使用对象资源管理器创建、管理索引
①为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80 % 。

②重命名索引,将索引“emp_id”重命名为“员工表_员工号”。

③删除索引“员工表_员工号”。

2)使用T-SQL语句创建、管理索引
①为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80 % 。

②重命名索引,将索引“emp_id”重命名为“员工表_员工号”。

③为员工参与项目表创建一个索引名为“员工_项目_index”的非聚集复合索引,索引关键字为“员工号”,升序,项目编号,降序,填充因子50%。

④删除索引“员工表_员工号”和“员工_项目_index”。

3)索引前后的执行计划
①删除员工表中员工号上的主键。

按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。

(员工表和员工参与项目表中的员工号都没有索引)②为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序;按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。

(员工表中员工号没索引,员工参与项目表中的员工号有非聚集
索引)
③重建员工表中员工号上的主键,删除“员工参与项目_员工号”的非聚集索引。

按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。

(员工表中员工号有聚集索引,员工参与项目表中的员工号没有非聚集索引)
④为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序。

按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。

(员工表中员工号有聚集索引,员工参与项目表中的员工号有非聚集索引)
四、实验结果与分析
1-1
1-2
1-3
use xmgla
go
drop index员工表.员工表_员工号
2-1
use xmgla
go
create unique NONCLUSTERED index
emp_id on员工表(员工号)
with(fillfactor=80)
use xmgla
go
sp_rename'员工表.emp_id','员工表_员工号'
2-3
use xmgla
go
create NONCLUSTERED index
员工_项目_index on
员工参与项目(员工号asc,
项目编号desc)
with(fillfactor=50)
2-4
use xmgla
go
drop index员工表.员工表_员工号
drop index员工参与项目.员工_项目_index
select姓名,职责,项目名称
from员工表,项目表,员工参与项目
where员工表.员工号=员工参与项目.员工号and项目表.项目编号=员工参与项目.项目编号
I/O=0.003125+0.003125+0.003125=0.009375
CPU开销=0.0001581+0.0001581+0.000046+0.0001691+0.0000189=0.0005502 3-2
create nonclustered index员工参与项目_员工号
ON员工参与项目(员工号asc)
select姓名,职责,项目名称
from员工表,项目表,员工参与项目
where员工表.员工号=员工参与项目.员工号
and项目表.项目编号=员工参与项目.项目编号
I/O=0.003125+0.003125+0.003125=0.009375
CPU开销=0.0001669+0.0001581+0.0000376+0.0180447+0.0001691=0.0188794
3-3
DROP index员工参与项目.员工参与项目_员工号select姓名,职责,项目名称
from员工表,项目表,员工参与项目
where员工表.员工号=员工参与项目.员工号
and项目表.项目编号=员工参与项目.项目编号
I/O=0.003125+0.003125+0.003125=0.009375
CPU开销=0.0000376+0.0001669+0.0001581+0.0001581+0.0000189=0.0005396
3-4
create nonclustered index员工参与项目_员工号on员工参与项目(员工号asc)
select姓名,职责,项目名称
from员工表,项目表,员工参与项目
where员工表.员工号=员工参与项目.员工号
and
项目表.项目编号=员工参与项目.项目编号
I/O=0.003125+0.003125+0.003125=0.009375
CPU开销=0.0000376+0.0001669+0.0001581+0.0001581+0.0000209=0.0005416
五、实验体会
这次试验,充分了解了数据库中索引的使用。

索引便捷了我们对数据的查询,提高了工作效率。

所以在以后的学习中要重视索引的作用。

相关主题