O uso do SQL Server 2008 Recovery Model e Log Size Impact Memory para o processo sqlservr.exe?

1

Problema

Temos uma instância do SQL Server (2008) executando nosso software com o que consideramos um pequeno número de usuários (cerca de 30 concorrentes conectados ao servidor a qualquer momento)

Como fornecedor, não somos DBAs SQL e apenas oferecemos um conjunto de habilidades básicas para esses tipos de problemas. A maioria dos clientes tem seu próprio DBA SQL para preencher essa função para eles, mas às vezes precisamos intervir e ajudar se o cliente não tiver suporte adequado.

Embora eles usem esse servidor para mais do que apenas SQL e isso é um problema que tem que ser tratado separadamente, recentemente notamos que o processo sqlservr.exe desse cliente está usando muito mais memória RAM do que esperamos ver software.

Antecedentes

Primeiro, deixe-me começar por mencionar que eu entendo que o padrão de memória máxima do SQL Server é basicamente configurado para usar tudo o que um servidor tem disponível. Alteramos esse valor para 10 GB, já que esperamos que eles precisem de apenas cerca de 4 a 6 GB em determinado momento, considerando seu tamanho e partes do software que usam.

Algumas informações que podem ou não ser relevantes para minha pergunta:

  1. Eles têm os bancos de dados do nosso conjunto de software para o modelo de recuperação COMPLETO e os logs estão crescendo e crescendo sem manutenção por cerca de três anos.
  2. Quando reiniciamos o SQL Services, os usuários voltam ao software e, por um período de cerca de 24 horas, eles usam a quantidade de RAM que esperamos vê-los usar (cerca de 4-6 dos 10 GB alocados)
  3. Temos executado o Perfmon para comparar alguns dos resultados do contador com um período de tempo em que eles não estavam tendo esse problema, mas não notamos nenhuma diferença significativa entre os logs
  4. Visualizador de eventos verificado para quaisquer problemas de memória óbvios

Conclusão

Meu único palpite neste momento é que isso tem algo a ver com o enorme modelo de logs / recuperação, ou alguma configuração de SQL relacionada ao armazenamento em cache. Talvez esse seja um comportamento normal que um especialista em SQL planejaria ver, mas em nossa experiência limitada em executar nosso software no SQL Server, isso é anormal para uma instalação desse tamanho.

Então, para resumir tudo isso em um único TLDR:

O modelo de recuperação e o tamanho do log do SQL Server 2008 afetam o uso da memória para o processo sqlservr.exe? Se a resposta for sim, a minha descrição do nosso "problema" é normal para o SQL e nós simplesmente não o experimentamos antes? Se a resposta for não, quais são algumas outras coisas que você sugeriria investigar para resolver meu problema?

    
por Aaron 04.05.2015 / 23:49

1 resposta

2

Qual é o tamanho deste banco de dados? O SQL Server gosta de colocar todo o banco de dados na memória. Parece, a partir de sua pergunta, como se fosse um MDF de 200 MB com um LDF de 250 GB, ou algo horripilante como esse.

O modelo de recuperação não entra nele a menos que eles estejam negligenciando o banco de dados, o que eles claramente são.

  • Defina o banco de dados para recuperação simples.
  • Reduza o arquivo de log para um tamanho sã.
  • Defina o banco de dados para recuperação completa.
  • Execute um backup completo.
  • Imediatamente agendar backups de log completos e de transações regulares .

Eu pessoalmente não perderia tempo olhando para qualquer outra coisa até que você implemente a manutenção básica do banco de dados (embora 10 GB pareça uma alocação de memória mesquinha para o SQL Server).

    
por 05.05.2015 / 05:08