重溫EF 6 中的參數嗅探
雖然動態查詢提供了彈性,但它們的大小可能會導致EF 6中的性能問題。常見的罪魁禍首是參數嗅探,根據初始執行參數快取查詢計劃,導致參數嗅探時計劃效率低下
使用EF 6 解決參數嗅探
要克服參數嗅探,通知資料庫引擎在每次執行時重新編譯查詢至關重要。雖然更新資料庫統計資訊是標準做法,但它可能無法完全解決問題。
將「OPTION RECOMPILE」與 EF 6 結合
幸運的是,EF 6 提供了操作機制執行前的 SQL 指令。其中一種技術涉及使用攔截功能。
透過攔截實作
以下程式碼範例說明了OptionRecompileHintDbCommandInterceptor 類別的實作:
public class OptionRecompileHintDbCommandInterceptor : IDbCommandInterceptor { ... private static void addQueryHint(IDbCommand command) { ... } }用法
要利用此攔截器,只需在應用程式啟動時添加以下程式碼:
透過利用此方法,您可以強制資料庫引擎在每次執行時重新編譯查詢,從而減少參數嗅探並改進查詢表演。DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
以上是EF 6 攔截如何緩解參數嗅探效能問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!