AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 153747
Accepted
Stackoverflowuser
Stackoverflowuser
Asked: 2016-10-31 23:27:37 +0800 CST2016-10-31 23:27:37 +0800 CST 2016-10-31 23:27:37 +0800 CST

Utilização de memória em 98%, por que não 100%?

  • 772

Eu me pergunto por que o SQL Server não usa toda a memória disponível - 100% quando tenho certeza de que há um gargalo de memória. Por exemplo, um servidor que administro começa usando 91% da memória e aumenta gradualmente até 98, mas não 100. A tendência de aumento é a seguinte após uma reinicialização às 23:00:

  1. 58% após o reinício e chega a 79% ao longo da noite. Suponho que isso se deva aos backups noturnos feitos.
  2. 82% às 11:00 do dia seguinte.
  3. 90% até 12:00
  4. Uma tendência constante ao longo do dia até as 23:00, quando a utilização da memória aumenta para 93%
  5. 95% na manhã seguinte às 08:00
  6. 97% às 17:00
  7. 98% no dia seguinte às 14:00 e fica lá.

O que pode estar fazendo com que 2% não sejam utilizados? É possível que o sistema operacional Windows esteja impedindo isso? Em caso afirmativo, como posso provar que, de fato, o Windows está guardando isso para si mesmo?

Refiro-me ao uso geral de memória pelo servidor - ou seja, o sistema operacional. A configuração de memória máxima já está definida bem além da memória atual do servidor. Tenho uma ferramenta de monitoramento em mãos para rastrear a utilização da memória.

A utilização da memória pelo servidor não é inferior nem superior a 98%. Este é um SQL Server dedicado, de instância única e com dois bancos de dados, no qual nenhum outro serviço, aplicativo etc. está sendo executado. O SQL Server pode estar usando a maior parte da memória alocada - ou seja, 98% - mas minha pergunta é por que ele não está usando os 2% restantes? Não tenho certeza se estou ficando muito rabugento ao questionar esses 2%?

Graças à consulta Determinando a alocação de memória atual no uso da memória do monitor, confirmo que Memory_usedby_Sqlserver_GB é 60 de 64 GB de RAM total. Não consegui encontrar a coluna max server memorye a RAM total na saída do sys.dm_os_process_memoryDMV (talvez devido ao SQL Server 2008 R2), mas posso confirmar que é um servidor de 64 GB e máx. a memória do servidor é definida como 2147483647 MB.

Não sei se meu servidor utilizará alguma memória extra depois que eles forem colocados nos slots. Estou tentando provar se o servidor precisa de mais memoria, (se sim) vai fazer uso dela e assim fazer um motivo para empurrar para compra. Ficarei em uma posição desconfortável se a memória for comprada e a utilização da memória não aumentar e permanecer em seu estado atual - 60 GB. Ver 60 GB de RAM sendo utilizados depois de aumentar a memória do servidor de 64 GB para 128 GB será um desperdício de dinheiro. Quero ter certeza antes do fato se o servidor se beneficiará com as novas RAMs extras ou será indiferente.

sql-server sql-server-2008-r2
  • 2 2 respostas
  • 1945 Views

2 respostas

  • Voted
  1. user507
    2016-11-01T01:04:17+08:002016-11-01T01:04:17+08:00

    Tudo requer memória, incluindo o sistema operacional, assim como o SQL Server. O sistema operacional pode remover a memória do SQL Server, a menos que você tenha páginas bloqueadas nas permissões de memória do SQL Server. No entanto, mesmo assim, o sistema operacional sempre vencerá para se manter funcionando; portanto, se precisar de memória, forçará o SQL Server a desistir.

    Além disso, só porque o SQL Server puxou até 98% da memória não significa necessariamente que está usando tudo. Você teria que se aprofundar no uso de memória do próprio SQL Server para saber o que ele está fazendo com tudo isso. Ele o mantém até que o sistema operacional o solicite de volta, com força ou de maneira agradável.

    Também observarei que você não deve ter a memória máxima definida "bem além da capacidade de memória atual do servidor". O SQL Server pensando que pode pegar mais memória do que realmente existe pode causar problemas de desempenho. A memória máxima é apenas o limite do buffer pool, isso não inclui outras áreas dos processos do SQL Server que capturam memória. Portanto, é melhor manter a memória máxima mais baixa para que o sistema operacional e outros processos do SQL Server tenham alguma.

    Para se aprofundar no desempenho, use Perfmon, DVMs, sua ferramenta de monitoramento (se incluir monitoramento do SQL Server).

    Especificando a memória máxima: eu baseio no sistema operacional, mas você também deve considerar o que mais está sendo executado no servidor. Você está executando outros componentes do SQL Server (SSIS, SSAS, SSRS)? Você tem algum agente para fins de monitoramento ou segurança? Um exemplo, o valor base para mim com o Windows Server 2012 R2 é deixar o sistema operacional com 6 GB de RAM e todo o resto vai para o SQL Server.

    Consulte Monitorar o uso de memória na documentação do produto.

    • 5
  2. Best Answer
    Paul White
    2016-11-05T07:07:26+08:002016-11-05T07:07:26+08:00

    Resposta do Wiki da comunidade gerada a partir dos comentários das perguntas de Shanky e Shawn Melton


    Dos 64 GB no servidor, o SQL Server está usando 60 GB e o restante (4 GB) é usado pelo sistema operacional. Isso é claro e simples. Como você não definiu max server memory, ele também pode usar 61 GB e também reduzir para 58 GB. Isso é gerenciado automaticamente. Não vejo nenhum problema aqui.

    Não sei se meu servidor utilizará alguma memória extra depois que eles forem colocados nos slots. Estou tentando provar se o servidor precisa de mais memória...

    Consulte SQL Server 2008: quanta memória RAM o SQL Server deve usar em um servidor de 8 GB de RAM? No momento em que você adicionar mais RAM e definir max server memory, o SQL Server tentará utilizá-lo e provavelmente o fará. O SQL Server está com fome de memória, ele usará memória e armazenará em cache os objetos.

    A memória sempre será usada se você der acesso ao SQL Server a ela, mas isso não vai resolver problemas gerais de desempenho se o código for o problema (por que ele quer usar tanto?) Jogar hardware em um problema é apenas uma abordagem band-aid para consertar as coisas. Se você tiver 70 GB de dados, o SQL Server, em algum momento, tentará colocar todos os 70 GB na memória quando algo tentar acessá-los.

    • 4

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve