[SQL ] TEMP TABLE效能问题

楼主: 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都有类似的情况
喂狗喂了好久都未能找到相似的解答,不知各位前辈有没有碰过这样的情形
感谢各位给点还能除错的方向~~
作者: rockchangnew (rock)   2016-06-18 11:36:00
可以注意当下的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,很怪
作者: rockchangnew (rock)   2016-06-18 13:43:00
可以到FB的SQL PASS Taiwan去问,那里的高手多变慢的时候看执行计画,应该都可以发现问题
楼主: kb0130 (乌拉拉)   2016-06-18 15:10:00
我也有加SQL PASS,很常看到楼上这位高手,只是不喜欢抛头露面,回正题,执行计画最高的COST都在INSERT #TB那段
作者: futureisours (ccc)   2016-06-18 23:29:00
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
谢谢!我明天试试看

Links booklink

Contact Us: admin [ a t ] ucptt.com