2017年7月28日 星期五

[SQL Server] 如何解決不佳的Parameter sniffing所造成的效能問題

前言
從上一篇文章中 : https://retrydb.blogspot.tw/2017/07/sql-server-parameter-sniffing.html
我們了解
Parameter sniffing的目的是為了讓Plan可以重複使用,避免每次執行Stored procedure都必須耗費CPU編譯其語法來選擇其演算法。
同時,我們也了解到,如果第一次執行所選擇的是資料分布非常極端的情況,可能造成之後在執行此Stored procedure時,所衍生出的效能問題。
本篇會介紹幾個情境如何避免Bad Parameter sniffing

2017年7月23日 星期日

[SQL Server] 淺談Parameter sniffing (一)

什麼是Parameter sniffing?

SQL Server為了避免在Cache有許多重覆的執行計畫,當你的語法是參數化的,且沒有任何的PlanCache中時,會根據你當時的參數產生一份最恰當的執行計畫,爾後除非recompile stored procedure,否則就會一直重用這份執行計畫來選擇是否要Scan/Seek table、選擇哪種Join方式(註解1)、所有相關的運算方法…等等。