[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