SQL Server 頁面查詢超時(SOS_SCHEDULER_YIELD等待)


一、問題概述

問題大概是這樣的,有一個功能頁面經常查詢超時,有時候就算能查詢出來也要很長的時間,但是有時又會很快。遇到的這種問題在排除掉網絡原因之后基本上可以從查詢語句上去找原因。

編譯查詢SQL語句和查詢進程等待結果如下:

1.進程等待

2.編譯查詢

問題分析:

1.等待類型為SOS_SCHEDULER_YIELD並且CPU時長很長

2.而且查詢時長基本上都是消耗在編譯這塊,實際的查詢時長不到一秒。

SOS_SCHEDULER_YIELD等待是SQL Server OS調度這塊的線程之間的切換的等待。

 

這里出於不便沒有把SQL語句貼上,實際的SQL語句單單子查詢就達60多個,查詢語句達到200行,導致生成執行計划的時間過長。單個子查詢很簡單。

二、解決方案

出現上面的這個原因是由於查詢語句子查詢太多導致編譯時間過長,解決辦法可以將每一個子查詢單獨查詢賦值到變量,或者把子查詢冗余處理。

 

 

 

 

 

 

備注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接,否則保留追究責任的權利。

《歡迎交流討論》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM