Eu estava martelando minha instância do SQL Server ontem por cerca de 3 horas executando um cálculo intensivo que estava consumindo toda a RAM física alocada (tenho limitada a 2 GB devido ao meu hardware de estação de trabalho limitado) e de repente (e muitas outras coisas?) sua memória em uma mudança aparente para usar exclusivamente o arquivo de paginação.
Meu computador estava ficando tão incrivelmente atrasado que fui forçado a reiniciar (o que levou 10 minutos apenas para acessar as opções de energia).
Consegui obter uma captura de tela do gerenciador de tarefas antes de reiniciar (que deixo rodando em segundo plano com baixa velocidade de atualização). Com a janela redimensionada para mostrar o histórico máximo, ficou assim:
Esse comportamento surpreendente causou tempo de inatividade. Este é um recurso documentado?
Estou executando o Windows Server 2008 R2 com um mecanismo de banco de dados Enterprise 2014.
Obrigado.
Sim, isto é, está documentado em RAM, memória virtual, arquivo de paginação e gerenciamento de memória no Windows . Citando este artigo de suporte
A razão pela qual ele congelou porque a velocidade do disco é muito mais lenta que a velocidade da memória. Após a paginação, a parte do disco estava se comportando como RAM.
Para descobrir quanta memória foi paginada em um determinado momento, você pode usar DMV sys.dm_os_process_memory. Veja a diferença de coluna
physical_memory_in_use_kb
evirtual_address_space_committed_kb
. A diferença dessas duas colunas forneceria o SQL Server usando memória paginada.Você pode evitar isso em maior medida, dando à conta de serviço do SQL Server Locked Pages in Memory Privilege . Isso não permitirá que a memória do SQL Server seja paginada, MAS ainda o Windows pode solicitar que o SQL Server reduza sua utilização de memória até a memória mínima do servidor depois disso, se ainda houver uma pressão de memória severa, o processo do sistema operacional será paginado e isso pode até levar ao desligamento inesperado do sistema operacional por isso tem cuidado. A melhor solução é adicionar mais RAM, neste caso especificamente.
EDIT: Do seu comentário
Ah!! essa é realmente uma quantidade muito pequena de memória para o SQL Server funcionar e isso também quando você está fazendo alguns testes severos
Resposta do wiki da comunidade :
O Windows chamou você, é assim que o Virtual Memory Manager funciona. Se você usar páginas de bloqueio na memória , não será capaz... embora você possa travar seu sistema em vez de ficar lento. A configuração adequada
max server memory
também é um bom começo.Se o conjunto de dados com o qual você está trabalhando for muito maior que 8 GB, talvez seja hora de hospedá-lo em um servidor com hardware mais apropriado. O SQL Server não funciona com páginas em disco (elas precisam ser lidas na memória) e as consultas podem solicitar memória para determinados operadores (classificações, hashes). O SQL Server pode usar memória além da memória máxima do servidor para essas concessões de memória. Consulte: Você deu memória suficiente ao SQL Server 2012 Standard Edition?
Se e quando você atualizar para o SQL Server 2012 ou posterior, observe que foram feitas alterações significativas no gerenciamento de memória. Consulte Alterações no Gerenciamento de Memória a partir do SQL Server 2012 (11.x) . Em particular, o SQL Server pode usar memória (por exemplo, para ordenações e hashing) além do limite definido por
max server memory
(especialmente para operações columnstore), mas ainda tentará voltar a esse limite o mais rápido possível.