Estou trabalhando com SQL Server 2016 e SQL Server 2019 Standard Edition. Nós temos esse trabalho que está lá há um tempo. Costumava ser pequeno, mas agora executa dezenas de SELECT/DELETE
instruções. (Não há GO
separador entre as declarações.)
- Eu queria saber como o SQL Server aloca RAM para etapas de trabalho?
- O SQL tentará alocar a RAM para toda a etapa de uma só vez?
- Ou ele alocará a RAM para cada consulta enquanto executa a etapa?
- Considerando o uso de RAM, seria melhor fazer etapas diferentes para o trabalho?
Provavelmente vou acabar separando o trabalho de qualquer maneira, mesmo que apenas para fins de monitoramento. Mas como estamos usando a edição SQL Standard, monitoro de perto o uso da RAM e não consegui encontrar informações sobre a alocação dentro dos trabalhos do SQL Agent.
As consultas executadas no SQL Server Agent são exatamente iguais às consultas executadas em qualquer outro cliente, como o SQL Server Management Studio.
Copie e cole as consultas do trabalho em uma janela de consulta do SSMS, ative os Planos de Execução Reais e veja o que aparece. Para rir, você pode adicionar separadores de lote entre cada consulta, executá-la novamente e ver a diferença que faz.
O SQL Server aloca memória por consulta, não para todo o lote de uma vez.