调用本机编译存储过程的最佳做法
本机编译存储过程:
通常用于应用程序中性能至关重要的部分。
频繁执行。
操作速度快。
使用本机编译存储过程所得的性能优势随行数和该过程所处理的逻辑数的上升而增加。 例如,如果本机编译存储过程使用以下一项或多项操作,将获得更好的性能:
聚合。
嵌套循环联接。
多语句选择、插入、更新和删除操作。
复杂表达式。
程序逻辑,如条件语句和循环。
如果只需处理一行,则使用本机编译存储过程可能没有任何性能优势。
避免服务器映射参数名称和转换类型:
使传递给过程的参数类型与过程定义中的类型相匹配。
在调用本机编译的存储过程时使用序数(无名称)参数。 要实现最高效的执行,请勿使用命名参数。
可通过 XEvent hekaton_slow_parameter_passing
及 reason=named_parameters
检测使用了(低效)命名参数的本机编译存储过程。
类似地,可通过 XEvent hekaton_slow_parameter_passing
及 reason=parameter_conversion
检测类型不匹配。
由于在) 的很多情况下使用内存优化表时需要实现重试逻辑 (,并且需要解决某些功能限制,因此可能需要创建包装器解释的 Transact-SQL 存储过程。 有关示例,请参阅 Memory-Optimized表事务重试逻辑指南。