Procedure consigliate per chiamare stored procedure compilate in modo nativo
Le stored procedure compilate in modo nativo:
Vengono in genere utilizzate nelle parti critiche per le prestazioni di un'applicazione.
Vengono eseguite di frequente.
Devono essere molto veloci.
Il vantaggio a livello di prestazioni garantito dall'utilizzo di una stored procedure compilata in modo nativo aumenta con il numero di righe e la quantità di logica elaborata dalla procedura. Ad esempio, tramite una stored procedure compilata in modo nativo vengono garantite prestazioni migliori se si utilizzato uno o più degli elementi seguenti:
Aggregazione.
Join a cicli annidati.
Operazioni di selezione, inserimento, aggiornamento ed eliminazione a più istruzioni.
Espressioni complesse.
Logica procedurale, ad esempio cicli e istruzioni condizionali.
Se è necessario elaborare una sola riga, l'utilizzo di una stored procedure compilata in modo nativo non può garantire un vantaggio in termini di prestazioni.
Per evitare che nel server debbano essere eseguiti il mapping dei nomi di parametro e la conversione dei tipi:
Associare i tipi dei parametri passati alla stored procedure ai tipi nella definizione della stored procedure.
Utilizzare i parametri ordinali (senza nome) per chiamare le stored procedure compilate in modo nativo. Per un'esecuzione ottimale, non utilizzare parametri denominati.
L'utilizzo di parametri denominati (inefficiente) con stored procedure compilate in modo nativo può essere rilevato tramite l'XEvent hekaton_slow_parameter_passing
con reason=named_parameters
.
In modo analogo è possibile rilevare l'utilizzo di tipi non corrispondenti tramite lo stesso XEvent hekaton_slow_parameter_passing
con reason=parameter_conversion
.
Poiché è necessario implementare la logica di ripetizione dei tentativi quando si usano tabelle ottimizzate per la memoria (in molti scenari) e poiché sarà necessario aggirare determinate limitazioni delle funzionalità, potrebbe essere necessario creare una stored procedure Transact-SQL interpretata del wrapper. Per un esempio, vedere Linee guida per la logica di ripetizione dei tentativi per le transazioni nelle tabelle Memory-Optimized.