Prácticas recomendadas para llamar a un procedimiento almacenado compilado de forma nativa

Los procedimientos almacenados compilados de forma nativa:

  • Se suelen usar en componentes esenciales para el rendimiento de una aplicación.

  • Se ejecutan con frecuencia.

  • Se espera que sean muy rápidos.

La ventaja de rendimiento que supone emplear 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 tendrá mejor rendimiento si usa uno o varios de los elementos siguientes:

  • Agregación.

  • Combinaciones de bucles anidados.

  • Operaciones de inserción, actualización y eliminación de varias instrucciones.

  • Expresiones complejas.

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

Si solo necesita procesar una única fila, el uso de un procedimiento almacenado compilado de forma nativa quizás no proporcione ventajas de rendimiento.

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

  • Haga corresponder los tipos de parámetros pasados al procedimiento con los tipos de la definición del procedimiento.

  • Use parámetros ordinales (anónimos) cuando llame a procedimientos almacenados compilados de forma nativa. Para que la ejecución sea más eficaz, no utilice parámetros con nombre.

El uso de parámetros con nombre (ineficaces) con procedimientos almacenados compilados de forma nativa se puede detectar con el XEvent hekaton_slow_parameter_passing, con reason=named_parameters.

Asimismo, 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 la lógica de reintento al usar tablas optimizadas para memoria (en muchos escenarios) y, dado que tendrá que solucionar ciertas limitaciones de características, es posible que desee crear un procedimiento almacenado de Transact-SQL interpretado por el contenedor. Para obtener un ejemplo, vea Guidelines for Retry Logic for Transactions on Memory-Optimized Tables.

Consulte también

Procedimientos almacenados compilados de forma nativa