Práticas recomendadas para chamar procedimentos armazenados compilados nativamente
Estes são os procedimentos armazenados compilados nativamente:
Geralmente usados em partes essenciais do desempenho de um aplicativo.
Executados com frequência.
Espera-se que sejam muito rápidos.
O benefício em termos de desempenho com o uso de um procedimento armazenado compilado nativamente aumenta com o crescente número de linhas e a quantidade de lógica que é processada pelo procedimento. Por exemplo, um procedimento armazenado compilado nativamente exibirá o melhor desempenho se ele usar um ou mais dos seguintes itens:
Agregação.
Junções de loops aninhados.
Operações de seleção, inserção, atualização e exclusão com várias instruções.
Expressões complexas.
Lógica de procedimento, como instruções condicionais e loops.
Se você precisa processar apenas uma única linha, usar um procedimento armazenado compilado nativamente talvez não traga um benefício em termos de desempenho.
Para evitar que o servidor precise mapear nomes de parâmetro e converter tipos:
Faça a correspondência dos tipos dos parâmetros passados para o procedimento com os tipos contidos na definição de procedimento.
Use parâmetros ordinais (sem nome) ao chamar procedimentos armazenados compilados nativamente. Para uma execução mais eficiente, não use parâmetros nomeados.
O uso de parâmetros nomeados (ineficientes) com procedimentos armazenados compilados nativamente poderá ser detectado com o XEvent hekaton_slow_parameter_passing
, com reason=named_parameters
.
Da mesma forma, você pode detectar o uso de tipos incompatíveis através do mesmo XEvent hekaton_slow_parameter_passing
, com reason=parameter_conversion
.
Como você precisará implementar a lógica de repetição ao usar tabelas com otimização de memória (em muitos cenários) e, como precisará contornar determinadas limitações de recursos, talvez você queira criar um procedimento armazenado Transact-SQL interpretado por wrapper. Para obter um exemplo, consulte Diretrizes para lógica de repetição para transações em tabelas de Memory-Optimized.