呼叫原生編譯預存程序的最佳作法
原生編譯預存程序:
通常用於應用程式的關鍵性效能組件中。
經常執行。
預期非常快速。
使用原生編譯預存程序的效能優勢,會隨程序所處理的資料列數目和邏輯數量增多而提升。 例如,如果原生編譯預存程序使用下列一個或多個項目,則會展現更佳的效能:
彙總:
巢狀迴圈聯結。
多重陳述式選取、插入、更新和刪除作業。
複雜運算式。
程序邏輯,例如條件陳述式和迴圈。
如果您只需要處理一個資料列,使用原生編譯預存程序可能不會提供效能優勢。
若要避免伺服器必須對應參數名稱和轉換類型:
讓傳遞至程序的參數類型與程序定義中的類型相符。
當呼叫原生編譯預存程序時,請使用序數 (無名) 參數。 若要以最有效率方式執行,請勿使用具名參數。
透過 XEvent hekaton_slow_parameter_passing
與 reason=named_parameters
,可偵測到 (無效率的) 具名參數與原生編譯預存程序的使用方式。
同樣地,您可以透過相同的 XEvent hekaton_slow_parameter_passing
與 reason=parameter_conversion
,偵測到不相符類型的使用方式。
由於您在許多案例中使用記憶體優化資料表 (時,需要實作重試邏輯) ,而且因為您必須解決某些功能限制,所以您可能想要建立包裝函式解譯的 Transact-SQL 預存程式。 如需範例,請參閱 Memory-Optimized 資料表上交易的重試邏輯指導方針。