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 / 220832
Accepted
user9516827
user9516827
Asked: 2018-10-24 09:19:35 +0800 CST2018-10-24 09:19:35 +0800 CST 2018-10-24 09:19:35 +0800 CST

Pressão de memória no SQL Server - Ativar o LPIM ou não?

  • 772

Eu tenho execução de consulta lenta no meu SQL Server 2016.

Configurações do servidor:

  1. Memória física total: 128 GB
  2. Memória máxima do servidor SQL: 102 GB
  3. A replicação de transações está habilitada.
  4. Tamanho do banco de dados: 1,6 TB
  5. Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64) 18 de março de 2018 09:11:49 Direitos autorais (c) Microsoft Corporation Standard Edition (64 bits) no Windows Server 2016 Standard 10.0 (Build 14393: )

Executei a ring bufferconsulta para verificar se a memória física está baixa. A razão pela qual eu verifiquei o buffer de anel para a pressão da memória é porque meu cache do plano também está sendo limpo com frequência, mesmo que ninguém esteja executando nenhum script para limpar o cache Avail Phys Mem.KB.

Uma coisa que aprendi é que todo RESOURCE_MEMPHYSICAL_LOWo processo do indicador é 2, o que significa que o problema de memória está na memória alocada para o SQL Server e não no restante da memória disponível para o sistema operacional e outro aplicativo. PARA SUA INFORMAÇÃO. Este é um servidor dedicado do SQL Server.

insira a descrição da imagem aqui

Também verifiquei no Monitor de desempenho para Avaialable MByteso qual mostra o valor 16.662,00 (16 GB) conforme abaixo.

Acho que 16 GB são suficientes para SO+outros aplicativos, sendo este um servidor dedicado SQL server.

insira a descrição da imagem aqui

Verifiquei o diagnóstico do servidor também. Diz que 25 GB estão disponíveis.

insira a descrição da imagem aqui

Então agora estou confuso se:

  1. Existe uma pressão de memória neste servidor?
  2. O RESOURCE_MEMPHYSICAL_LOWsinalizador está sendo definido pelo sistema operacional ou processo externo ou SQL Server?
  3. Devo habilitar o LPIM para corrigir esse problema?

Detalhes adicionais conforme a resposta de @Shanky.

  1. Eu tinha o Query store ativado, mas o desativei há uma semana.
  2. rounds_count para planos do SQL Server com ponteiro do relógio HAND_EXTERNALestá aumentando.

Mais detalhes.

  • Estou enfrentando uma enorme concessão de memória por algumas consultas e isso está fazendo com que RESOURCE_SEMAPHORE aguarde outras consultas.

Essa enorme concessão de memória (uma consulta que verifiquei, a concessão de memória é de ~ 7 GB) resulta em uma pressão de memória do servidor SQL e isso pode ser a causa da limpeza e RESOURCE_MEMPHYSICAL_LOWsinalização do cache do plano.

sql-server sql-server-2016
  • 1 1 respostas
  • 1374 Views

1 respostas

  • Voted
  1. Best Answer
    Shanky
    2018-10-25T06:52:29+08:002018-10-25T06:52:29+08:00

    existe uma pressão de memória neste servidor.

    Com a informação limitada, não posso dizer com certeza. Precisa de mais parâmetros e saída do perfmon para informar sobre a pressão da memória. Mas sim, a partir da saída da consulta que você postou para o momento 2018-10-23 11:22:30:457, havia de fato pouca memória para alguns processos, não para o sistema SQL Server como um todo.

    o sinalizador RESOURCE_MEMPHYSICAL_LOW está sendo definido pelo sistema operacional ou processo externo ou servidor SQL.?

    Olhe para a saída que diz que RESOURCE_MEMPHYSICAL_LOWtem valores de 2que IndicatorProcesssignifica que certos processos que estavam em execução estavam de fato enfrentando pressão de memória, se IndicatorSystemtivesse valor de 2, teria sido pressão de memória em todo o sistema. Observe também que a pressão da memória está vindo de baixa memória física (RAM) e não de baixa memória virtual (VAS). Então você pode ver que apenas tomando um valor para um pedaço de tempo é difícil dizer que há uma pressão de memória contínua . Eu sugiro que você leia Usando sys.dm_os_ring_buffers para diagnosticar problemas de memória no SQL Server para entender o que significam os valores Indicatorsystem e IndicatorProcess

    devo habilitar o LPIM para corrigir esse problema.?

    O LPIM não corrigirá o problema, apenas mascarará o problema e será uma solução alternativa. Você precisa descobrir o que está fazendo com que o monitor de recursos sinalize a notificação de pouca memória, é possível que algum processo em execução esteja causando isso. Agora, planejar o cache sendo limpo com frequência é algo que muitas pessoas relataram do SQL Server 2016 em diante e pode ser devido ao armazenamento de consultas, você está usando um?. O armazenamento de consultas costumava ser o culpado pela limpeza do cache do plano, mas como você está no SP mais recente, duvido desse fator.

    Para ver a pressão da memória para o cache, também podemos usar DMV sys.dm_os_memory_cache_clock_hands

    SELECT  *
    FROM sys.dm_os_memory_cache_clock_hands
    WHERE rounds_count > 0
    

    Se rounds_countestiver aumentando, isso significa que houve pressão que forçou os relógios a varrer o cache com mais frequência e remover as entradas.

    EDITAR:

    Estou enfrentando uma enorme concessão de memória por algumas consultas e isso está fazendo com que RESOURCE_SEMAPHORE aguarde outras consultas. Essa enorme concessão de memória (uma consulta que verifiquei, a concessão de memória é ~ 7 GB) resulta em uma pressão de memória do servidor SQL e essa pode ser a causa de limpeza de cache do plano e sinalizador RESOURCE_MEMPHYSICAL_LOW.

    Sim, muito provavelmente, eu vi que você levantou um tópico específico para esta questão e gostaria apenas de acrescentar que, antes de fazer qualquer coisa, certifique-se de ter as estatísticas atualizadas e os índices desfragmentados. Uma estatística desatualizada pode levar a um plano ruim que pode acabar pedindo mais memória e, portanto, esperas de semáforo.

    Abaixo estão lista de tópicos falando sobre problema semelhante

    • Tópico do Stackexchange sobre o cache do plano sendo limpo com frequência.
    • Thread do MSDN sobre o cache do plano sendo limpo.
    • 3

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