清除某語句執行計劃,降低CPU

某數據庫服務器CPU突然佔用超過40%了,平時只有5%以下,可看正在執行的語句,發現有大量的相同語句在運行,可能是執行計劃不正確導致,所以我們可以只對這個語句進行執行計劃的清除,清除後會自動重新再生成新的執行計劃,這樣實現了執行計劃的更新。

SELECT a.execution_count ,
        a.max_worker_time ,
        a.total_worker_time ,
        a.total_worker_time / a.execution_count ,--毫秒 
        a.sql_handle ,
        a.plan_handle ,
        query_plan ,
        text
 FROM   sys.dm_exec_query_stats a
        CROSS APPLY sys.dm_exec_sql_text(a.sql_handle)
        CROSS APPLY sys.dm_exec_query_plan(a.plan_handle)
 WHERE  text LIKE '%查要詢的語句內容(@P0 datetime2,@P1 datetime2,@P2 int)'
 
 DBCC freeproccache( 0x02000000518B9009534DAC8FFFE0BF952670BDF8B82E1EB0)--用sql_handle清空某個語句的執行計劃

建議使用兩次以上的語句,因爲在執行DBCC時可能正巧剛剛被重新編譯了,仍然是舊計劃。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章