Eu tenho uma instalação de sandbox do SQL Server no meu computador local. Eu configurei a memória que a instância do SQL Server pode usar para 1000 mb. Ao executar uma operação intensiva, o uso da memória aumenta até 1000 mb. Quando a operação termina, o SQL Server ainda está mantendo a memória. Como liberar essa reserva de memória?
sql-server
memory
jrara
fonte
fonte
min server memory
e ? Depois que o SQL Server reserva o mínimo que você especificar, ele nunca será liberado, a menos que você altere a configuração ou rejeite a instância. Como James observou, se ele reserva mais do que o mínimo especificado, em teoria, ele deve ser liberado quando não for necessário e houver pressão de memória na máquina.max server memory
Respostas:
Pare / inicie o serviço, nada mais liberará a memória de volta para o sistema operacional.
Obviamente, não é algo que você gostaria de fazer com um servidor operacional, mas perfeitamente razoável para uma sandbox local. Com três instâncias diferentes no meu laptop, é a única maneira viável.
Edite o seguinte comentário de @ Nick.
Qual é a sua definição de "não precisa disso"? Depois que o buffer pool estiver cheio, ele não será descartado até que elas sejam desfavorecidas por outras páginas serem trazidas. Se você quiser recuperar a memória imediatamente, como é o caso do @jrara, é necessário parar /começar.
fonte
QueryMemoryResourceNotification
para determinar quando o pool de buffers pode alocar memória e liberar memória". Portanto, se você estiver preocupado apenas com a fome de outros aplicativos que talvez precisem mais de memória, o SQL Server, em teoria, liberará memória que não é necessária quando o Windows solicitar. O único motivo pelo qual você deve forçar uma liberação reiniciando a instância é se esse mecanismo não estiver funcionando como projetado ou se as configurações de memória mín. / Máx. Estiverem incorretas.liberará a piscina.
https://msdn.microsoft.com/en-us/library/ms178529.aspx
Observações
A execução de DBCC FREESYSTEMCACHE limpa o cache do plano para a instância do SQL Server. A limpeza do cache do plano causa uma recompilação de todos os planos de execução subsequentes e pode causar uma diminuição repentina e temporária no desempenho da consulta. Para cada cache de armazenamento limpo no cache do plano, o log de erros do SQL Server conterá a seguinte mensagem informativa: "O SQL Server encontrou% d ocorrência (s) de liberação do cacheestore para o cache% '% s' (parte do cache do plano) devido a Operações 'DBCC FREEPROCCACHE' ou 'DBCC FREESYSTEMCACHE'. " Essa mensagem é registrada a cada cinco minutos, desde que o cache seja liberado dentro desse intervalo de tempo.
fonte
Ele abrirá a memória que não está sendo usada automaticamente, pois outros aplicativos tentam confirmar.
fonte