慢查询问题分析

作者: 来源:本站原创 点击数: 发布时间:2021年10月08日

例:某网站首页在无缓存的情况下,响应时间在5.5S左右,这个明显是不正常的,接下来如何分析:

8d020fea2bb24f8e8546c17aa9e5d152.png

以下操作建议放到单机环境下测试,拷贝网站和数据库在本地进行搭建,避免正式站服务器有其他访问影响;

1.打开数据库管理工具,然后打开SQL server Profiler;

50a22211aed445569af614cdd638c86b.png

2.常规下选择TSQL_Duration模板;

729b1133fa744e66b45b7dda4251c137.png

3.筛选条件为Duration执行时间大于100ms或者1000ms;如果在多数据库环境下可以直接根据数据库名来筛选指定数据库;

f34fdc45bdf34401829412901ed7ed82.png

67d57b941ca945b0998e474c098d97c0.png

4.直接运行,查看结果,如果有执行时间较大的查询,会在列表进行显示;可将sql语句复制出来单独执行查看时间或者将sql提交给开发进行优化处理;

d41ad0a98f7c4d4a83d37a3481a9dd21.png

5.如果执行时间都很快,那么不筛选条件,直接运行sql监视器,刷新首页后查看有多少条查询记录:下面代表首页有182条查询;

88d34754a71f4aec98f15b4267c6ec48.png

(注:没有缓存时访问首页,产生182条查询脚本,虽然大部分查询脚本不到10毫秒,但加在一起这都快有1秒了。另外每个列表,数据库查询数据出来后,还要传输给WEB服务器,然后我们系统还要转成List,再将数据解析成HTML,所以每个列表要大约100毫秒)

6.接下来就是优化首页模板;

用个很笨但是很实用的方法:逐一删除首页模板中的区块(顶部、底部、中间),然后刷新首页查看响应时间是否减少,再找设计部对此区块的模板进行优化。