45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全
页面导航: 首页 > 设计学院 > 网络编程 > 数据库 >

一次SQL Server调优经历

电脑软硬件应用网 45IT.COM 时间:2013-09-05 13:08 作者:佚名

前段时间数据库健康检查发现SQL Server服务器的idle时间变少,IO还是比较空闲,估计是遇到了高CPU占用的语句了。

介绍一下背景,我们公司负责运维N多的应有系统,负责提供良好的软、硬件环境,至于应用的开发质量,我们就无能为力了

解决这个问题,我的思路是:

  1. 找出CPU占用最大的语句。
  2. 分析查询计划。
  3. 优化。

1、找出语句

使用SQL Server自带的性能报表(不是报表服务),找出CPU占用最大的语句。如图1所示

图1 性能报表

我选取了“性能-按总CPU时间排在前面的查询”,得出以下两张报表,如图2所示:

图2 性能-按总CPU时间排在前面的查询

在报表中不能直接把语句Copy出来,非得让我另存为Excel才能Copy语句;而且经常标示不了是语句属于哪个数据库,不爽 :( 。

费了我九牛二虎之力才找出该条语句在哪个数据库执行,然后马上备份数据库,在另一个非生产数据库上面还原,创造实验环境。

废话少说,我把语句Copy出来,顺便整理了一下格式。如下:

select * 
from network_listen 
where 
node_code in 
    (

     select distinct node_code 
     from view_Log_Network_circsByUnit 
     where status='1' 
    )  
or 
node_code= 
    ( 
     select top 1 nodeCode 
     from TransmissionUnit_LocalInfo 
    )  
and 
node_code<> 
    ( 
     select parentNodeCode 
     from TransmissionUnit_RouterInfo 
     where nodeCode= 
            ( 
             select top 1 nodeCode 
             from TransmissionUnit_LocalInfo 
            ) 
    )

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识