Li um ótimo artigo publicado por Brent Ozar e fiz algumas perguntas relacionadas à concessão de memória. Não consigo responder às minhas perguntas na seção de comentários do artigo dele, então pensei em obter ajuda aqui.
- Pergunta: Quantos dados são derramados no disco? 400 MB ou 60 MB (7643 KB*8)?
no artigo ele afirma:
E não importa quantas vezes eu atualize as estatísticas, ainda obterei um vazamento de ~ 400 MB no disco.
estou meio confuso aqui (
- Pergunta: Se tudo estiver bem com as estimativas, as estatísticas estiverem atualizadas, a caixa tiver memória suficiente e nenhuma consulta estiver sendo executada naquele momento, por que ocorre o vazamento para o disco?
observe o número estimado de linhas versus o número real de linhas. Eles são idênticos. As estatísticas estão boas.
Também não estou usando um servidor pequeno: minha máquina virtual tem 32 GB de RAM e aloquei 28 GB disso para o SQL Server. Não há outras consultas em execução ao mesmo tempo - é apenas uma consulta solitária, derramando no disco...
Como mostra a dica de ferramenta, 7643 páginas de 8 KB são espalhadas = 59,71 MB. O restante da classificação ocorre dentro da memória alocada.
A classificação é derramada por dois motivos:
No SQL Server 2019, a memória concedida entre as execuções pode ser ajustada automaticamente para evitar o spill por meio do mecanismo de feedback de concessão de memória do modo de linha .
60 MB. Você pode verificar isso despejando
antes e depois da consulta
O tamanho da linha é uma estimativa e a memória precisa ser dividida entre os encadeamentos de varredura paralelos, qualquer um dos quais pode precisar ser derramado.