Compartir a través de


Procedimientos recomendados para llamar a procedimientos almacenados compilados de forma nativa

Los procedimientos almacenados compilados de forma nativa son:

  • Se usa normalmente en partes críticas para el rendimiento de una aplicación.

  • Ejecutado con frecuencia.

  • Se espera que sea muy rápido.

La ventaja de rendimiento de usar un procedimiento almacenado compilado de forma nativa aumenta con el número de filas y la cantidad de lógica que procesa el procedimiento. Por ejemplo, un procedimiento almacenado compilado de forma nativa mostrará un mejor rendimiento si usa uno o varios de los siguientes elementos:

  • Agregación.

  • Combinaciones de bucles anidados.

  • Varias instrucciones seleccionan, insertan, actualizan y eliminan operaciones.

  • Expresiones complejas.

  • Lógica de procedimientos, como instrucciones condicionales y bucles.

Si necesita procesar solo una sola fila, es posible que el uso de un procedimiento almacenado compilado de forma nativa no proporcione una ventaja de rendimiento.

Para evitar que el servidor tenga que asignar nombres de parámetro y convertir tipos:

  • Haz coincidir los tipos de los parámetros pasados al procedimiento con los tipos especificados en la definición del procedimiento.

  • Use parámetros ordinales (sin nombre) al llamar a procedimientos almacenados compilados de forma nativa. Para la ejecución más eficaz, no use parámetros con nombre.

El uso de parámetros con nombre ineficaces en procedimientos almacenados compilados nativamente se puede detectar a través del XEvent hekaton_slow_parameter_passing, con reason=named_parameters.

Del mismo modo, puede detectar el uso de tipos no coincidentes a través del mismo XEvent hekaton_slow_parameter_passing, con reason=parameter_conversion.

Dado que tendrá que implementar lógica de reintento al usar tablas optimizadas para memoria (en muchos escenarios) y, dado que tendrá que solucionar ciertas limitaciones de funcionalidades, es posible que desee crear un procedimiento almacenado con un contenedor interpretado Transact-SQL. Para obtener un ejemplo, vea Directrices para la lógica de reintento para transacciones en tablas de Memory-Optimized.

Véase también

Procedimientos almacenados compilados de forma nativa