调用本机编译存储过程的最佳做法

本机编译的存储过程包括:

  • 通常用于应用程序的性能关键部分。

  • 经常执行。

  • 预计速度非常快。

使用本机编译的存储过程的性能优势随着行数和过程处理的逻辑量增加。 例如,如果本机编译的存储过程使用下列一个或多个存储过程,则会表现出更好的性能:

  • 集合体。

  • 嵌套循环联接。

  • 多语句选择、插入、更新和删除作。

  • 复杂表达式。

  • 过程逻辑,如条件语句和循环。

如果需要仅处理一行,则使用本机编译的存储过程可能无法提供性能优势。

若要避免服务器必须映射参数名称和转换类型:

  • 将传递给过程的参数的类型与过程定义中的类型匹配。

  • 调用本机编译的存储过程时,请使用序号(无名称)参数。 对于最有效的执行,请勿使用命名参数。

通过 XEvent hekaton_slow_parameter_passingreason=named_parameters 可以检测出使用本机编译存储过程的低效命名参数。

同样,还可以通过同一 XEvent hekaton_slow_parameter_passing检测不匹配类型的使用,以及 reason=parameter_conversion

由于在使用内存优化表(在许多情况下)时需要实现重试逻辑,并且由于需要解决某些功能限制,因此可能需要创建解释为 Transact-SQL 存储过程的包装器。 有关示例,请参阅 有关 Memory-Optimized 表上的事务重试逻辑指南

另请参阅

本机编译的存储过程