楼主:
kb0130 (乌拉拉)
2016-06-18 06:34:28数据库名称: SQL Server 2008
数据库版本: standard ver in hyper-V
内容/问题描述:
各位前辈好,小弟最近碰到一个状况,
公司某台Sql Server,常碰到有些语法忽快忽慢
所谓快是1分内,慢能慢到30分钟那种,同样SQL参数条件都一样
查询当下执行中BATCH,都是INSERT #TEMPTABLE 类的语法
常态执行都不会这样的,于是自己做了以下调整试图解决
1.怀疑INSERT #TB 前的SELECT效能差->TUNNING SQL ->直接查已经快到不能再快了
2.统计值更新->更新后当下可能会变快,但有时又无效
3.procedure执行时多加参数 with recompile
4.检查temp db当下空间使用率很充足,实体DISK IO也很低
作了以上调整都未见改善,状况时好时坏,从前端AP到SQL AGENT都有类似的情况
喂狗喂了好久都未能找到相似的解答,不知各位前辈有没有碰过这样的情形
感谢各位给点还能除错的方向~~
可以注意当下的Wait Type或是否有被BLOCKtemp table的笔数是多或少,tempdb有无切多File等
作者: iFEELing (ing) 2016-06-18 12:39:00
慢到30min的时候看wait event看他在等什么
楼主:
kb0130 (乌拉拉)
2016-06-18 13:39:00回楼上几楼,完全没有等待,tempdb切8个FILESP_WHO2状态是RUNABLE,但是DMV又是RUNNING,很怪
可以到FB的SQL PASS Taiwan去问,那里的高手多变慢的时候看执行计画,应该都可以发现问题
楼主:
kb0130 (乌拉拉)
2016-06-18 15:10:00我也有加SQL PASS,很常看到楼上这位高手,只是不喜欢抛头露面,回正题,执行计画最高的COST都在INSERT #TB那段
insert #table后续会有select动作吧,我猜是这边慢#TABLE 可以加INDEX
楼主:
kb0130 (乌拉拉)
2016-06-19 08:08:00回楼上,当下的执行语法是INSERT,没看过HANG在SELECT的也没有任何WAIT TYPE或BLOCK。
作者:
YaMeiLo (亚妹露~!!)
2016-06-19 09:28:00如果是sp,把temp table拉到sp外宣告避免重新编译
楼主:
kb0130 (乌拉拉)
2016-06-19 12:27:00谢谢!我明天试试看