WEB开发网
开发学院数据库MSSQL Server 一次SQL Server调优经历 阅读

一次SQL Server调优经历

 2009-01-18 10:19:03 来源:WEB开发网   
核心提示:前段时间数据库健康检查发现SQL Server服务器的idle时间变少,IO还是比较空闲,一次SQL Server调优经历,估计是遇到了高CPU占用的语句了,介绍一下背景,废话少说,我把语句Copy出来,我们公司负责运维N多的应有系统,负责提供良好的软、硬件环境

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

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

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

找出CPU占用最大的语句。

分析查询计划。

优化。

1、找出语句

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

一次SQL Server调优经历

图1 性能报表

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

一次SQL Server调优经历

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

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

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

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

select*
fromnetwork_listen
where
node_codein
  (
  selectdistinctnode_code
  fromview_Log_Network_circsByUnit
  wherestatus='1'
  ) 
or
node_code=
  (
  selecttop1nodeCode
  fromTransmissionUnit_LocalInfo
  ) 
and
node_code<>
  (
  selectparentNodeCode
  fromTransmissionUnit_RouterInfo
  wherenodeCode=
      (
      selecttop1nodeCode
      fromTransmissionUnit_LocalInfo
      )
  )

1 2 3 4  下一页

Tags:一次 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接