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 / 326552
Accepted
Fajela Tajkiya
Fajela Tajkiya
Asked: 2023-04-28 19:09:43 +0800 CST2023-04-28 19:09:43 +0800 CST 2023-04-28 19:09:43 +0800 CST

Como verificar se o SQL Server está ficando sem memória ou recursos da CPU AGORA?

  • 772

Recentemente notei uma mensagem de erro em meu log de erros do SQL Server que dizia "O processador de consulta ficou sem recursos internos e não pôde produzir um plano de consulta." Suspeito que meu servidor esteja ficando sem memória ou recursos de CPU. No entanto, não tenho certeza de como confirmar isso.

Estou ciente dos comandos sysprocesses e sp_whoisactive, mas não tenho certeza se eles podem me dizer se meu servidor está ficando sem recursos neste momento.

Alguém poderia me fornecer algumas orientações sobre como verificar se meu SQL Server está ficando sem memória ou recursos de CPU? Qualquer ajuda seria apreciada.

sql-server
  • 1 1 respostas
  • 51 Views

1 respostas

  • Voted
  1. Best Answer
    John K. N.
    2023-04-28T20:19:24+08:002023-04-28T20:19:24+08:00

    A mensagem de erro completa pode ser lida:

    O processador de consulta ficou sem recursos internos e não pôde produzir um plano de consulta. Este é um evento raro e esperado apenas para consultas extremamente complexas ou consultas que fazem referência a um número muito grande de tabelas ou partições. Simplifique a consulta. Se acredita ter recebido esta mensagem por engano, contacte o Serviço de Apoio ao Cliente para mais informações.

    Isso pode não ser devido à falta de recursos no sentido convencional (RAM, CPU, IO, ...), mas mais um problema isolado com uma consulta que afeta os recursos de processamento interno do Mecanismo de Banco de Dados do SQL Server. .

    Razões possíveis

    Existem vários motivos pelos quais você pode receber essa mensagem de erro. Vou listar alguns:

    1. Suas consultas são muito complexas e contêm várias UNIONcláusulas que unem vários conjuntos de resultados em uma grande tabela que deve ser retornada ao cliente.¨

      por exemplo

      SELECT <column> FROM <table> WHERE <predicate>
      UNION
      SELECT <column> FROM <table> WHERE <predicate>
      UNION
      ....
      SELECT <column> FROM <table> WHERE <predicate> as RESULTSET;
      
    2. Suas consultas contêm várias subconsultas e estão esgotando os recursos internos.

      por exemplo

      SELECT <column> FROM <table> WHERE <column> = 
          (SELECT <column> FROM <table> WHERE <search_predicate> AND <column>
              (SELECT <column> FROM <table> WHERE <search_predicate>)
          );
      
    3. Incluir explicitamente um número extremamente grande de valores (muitos milhares de valores separados por vírgulas) entre parênteses em uma cláusula IN pode consumir recursos e retornar erros 8623 ou 8632. Para contornar esse problema, armazene os itens na lista IN em um tabela e use uma subconsulta SELECT dentro de uma cláusula IN.

      Referência: IN (Transact-SQL) (Microsoft Learn | SQL )

    Soluções

    1. Reduza o número de cláusulas UNION.

    2. Reduza o número de subconsultas em sua instrução complexa.

    3. Reduza o número de elementos na WHERE <column> IN (<value1>, <value2>, ... <value999>)cláusula. Por favor, considere também o conselho dado pela Microsoft:

      Simplifique a consulta dividindo-a em várias consultas ao longo da maior dimensão. Primeiro, remova quaisquer elementos de consulta que não sejam necessários e, em seguida, tente adicionar uma tabela temporária e dividir a consulta em duas. Observe que, se você mover uma parte da consulta para uma subconsulta, função ou expressão de tabela comum, isso não será suficiente porque eles serão recombinados em uma única consulta pelo compilador. Você também pode tentar adicionar dicas para forçar um plano anteriormente, por exemplo, OPTION (FORCE ORDER).
      Referência: MSSQLSERVER_8623 (Microsoft Learn | SQL)

    Respondendo à sua (outra) pergunta

    Alguém poderia me fornecer algumas orientações sobre como verificar se meu SQL Server está ficando sem memória ou recursos de CPU?

    1. Essa é uma pergunta bastante genérica. Encontrar as declarações que estão esgotando os recursos internos pode ser sua melhor opção. (Veja minha explicação inicial inicial no topo)

    2. Se você não tem uma linha de base de como seu SQL Server normalmente executa e quais recursos estão em uso, como você saberia se seu SQL Server está esgotando todos os recursos? Considere dar uma olhada na categoria Baseline em SQLSkills.

    3. OK. A configuração da RAM pode ser um problema.

      • Este é um SQL Server dedicado?
        • Não? Considere usar um SQL Server dedicado ou veja as respostas para Sim.
        • Sim?
          • Quanta memória meu SQL Server realmente precisa? (SQLSkills.com)
          • Resposta à memória máxima do servidor (DBA.SE)
    4. Experimente o kit de primeiros socorros fornecido por Brent Ozar para ver o que realmente está acontecendo AGORA!

      • sp_BlitzFirst : Por que meu SQL Server está lento agora?
      • sp_BlitzCache : Quais consultas estão usando mais recursos?
      • sp_BlitzWho : Quem está executando quais consultas agora?
    5. Poste mais detalhes na sua pergunta. Para fornecer uma resposta mais detalhada, precisaríamos de mais informações em sua pergunta.

      • Versão do SQL Server
      • Edição do SQL Server
      • Tamanho do banco de dados
      • Tamanho das mesas
      • Memória RAM / CPU
      • Configuração do grau máximo de paralelismo (propriedades do SQL Server)
      • Limite de custo para configuração de paralelismo (propriedades do SQL Server)
    6. Considere contratar um consultor. Não eu não...

    • 5

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