A-A+

数据库优化指南

2008年11月24日 编程开发 暂无评论 阅读 1 次

记录自己对公司OA系统进行优化的过程!

这里讨论的主要是"索引优化",请先看一下下面的文章

引用:

sql Server索引优化
http://www.zxlm.cn/fh/viewthread.php?tid=1654

公司OA运行了二年多,数据量3G,因为其中涉及了几个视图,造成某些应用的速度极慢.

最好选择一个在线人数最少的时候,或者是在本地的系统上进行分析.

首先打开SQL事件探查器,新建一个跟踪

在跟踪属性中选择模板名为"SQLProfiler_Duration"

切换到事件标签中,把选定的事件类中的"RPC:Completed"去掉(如果你的应用中使用了存储过程则可以保留)

再切换到"筛选"标签中,在"跟踪事件准则"中选中CPU->大于或等于,填入一个你认为运行一条SQL语句你所能接受的时间如"500"

            再找到选中"DatabaseID"->等于,填入你需要分析的数据库的ID

引用:

(知道数据名称如何取得数据的ID)
在查询分析器中运行
select name,dbid from master..sysdatabases where name='数据库的名字'

再点击"运行.从而开始你设定的事件跟踪.

然后执行应用中你认为最慢的的那些模板的操作.

一段时间后,在跟踪的窗口后找出那些运行所占用时间最长的SQL语句.

再找开"查询分析器"然后在查询分析器窗口选择"查询"->选中"显示执行计划"

然后把从跟踪窗口中选出的SQL语句在查询分析器中运行,然后通过分析执行计划的窗口中得出的结果,

找到占用"查询成本"最多的步骤,并记录是在哪个表上占用了最多的时间.

重复这样的步骤,直到运行完所有的SQL语句.这时你就应该能得到一个列表,从而分析出是在哪个表上占用了最多的时间.

接下来,分析程序或者SQL语句中的 WHERE 或 Order By字段,找出出现次数的字段,

再进入到数据库中,查看对应的字段上是否已经建立了索引.

然后建立最合理的索引.

然后再次在"查询分析器"中运行对应的SQL语句,对比上次的"执行计划"看那个步骤战胜的成本是否已经下降.

如果显示的执行计划中没有占用"查询成本"特别高的步骤,那么就说明你的优化很成功.

否则就需要重新设计索引了.

不过注意的是在大型的应用中,各个数据表的关系是很复杂的,所有需要综合考虑其它的情况,否则性能问题"此起彼落"!

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录