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 / 335345
Accepted
maxschaf
maxschaf
Asked: 2024-01-31 05:54:43 +0800 CST2024-01-31 05:54:43 +0800 CST 2024-01-31 05:54:43 +0800 CST

Os bancos de dados OLTP na memória demoram muito para serem recuperados durante a inicialização

  • 772

usamos o SQL Server 2019 no Windows com oltp na memória ativado em alguns bancos de dados. Após a reinicialização do servidor/reinicialização do serviço, os bancos de dados na memória demoram muito para ficarem disponíveis (mais de uma hora), mesmo que a maioria das tabelas não seja durável. O tamanho dos objetos com otimização de memória é muito pequeno: 10 MB

Vemos uma sessão em segundo plano no banco de dados mestre com tipo de espera (110514580ms)WAIT_XTP_RECOVERY e quase nenhuma leitura. Os núcleos da CPU estão em 100%. Os discos estão ociosos.

Usamos criptografia transparente de dados (TDE) para este banco de dados. Este banco de dados usa sinônimos para acessar outro banco de dados na mesma instância. Ele usa corretor de serviço. A instância possui replicação transacional configurada em bancos de dados sem ativação na memória.

Adicionar CPU torna-o mais rápido. Esta é uma máquina de baixo custo, mas não uma porcaria. Motor XTP 2.11.

Alguma idéia do que está acontecendo?

sql-server
  • 2 2 respostas
  • 357 Views

2 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2024-01-31T08:28:55+08:002024-01-31T08:28:55+08:00

    Após a reinicialização do servidor/reinicialização do serviço, os bancos de dados na memória demoram muito para ficarem disponíveis (mais de uma hora), mesmo que a maioria das tabelas não seja durável.

    Existem muitas facetas nisso além de durável ou não durável. As tabelas duráveis ​​precisarão ter seus arquivos de dados/delta lidos de volta na memória e isso levará tempo. Está demorando o tempo todo? Não sei, precisaríamos de mais dados.

    Se você tiver muitos objetos na memória (tabelas, procedimentos armazenados), todos esses objetos, independentemente do tipo, precisarão ser recompilados e carregados na memória antes que as tabelas associadas (duráveis) possam ter seus índices carregados na memória. O processo de compilação não deve demorar muito individualmente, mas pode demorar muito em conjunto. Isso não inclui coisas como software anti* que verifica o que você está fazendo 1.500 vezes e atrapalha.

    Se você observar suas estatísticas de espera, isso PREMPTIVE_OS_FINDFILEindica PREEMPTIVE_OS_CREATEDIRECTORYcontenção com o número de objetos sendo compilados e carregados no sistema - para os quais o TF 9944 desabilitará a criação de símbolos de depuração (PDBs) e arquivos de saída, entre outras otimizações. Isto pode ter um impacto substancial em sistemas com um grande número de itens otimizados para memória.

    Por último, quais são as especificações deste servidor? O que mostram os contadores de desempenho? A CPU está alta, o que indica que muitos itens e/ou software Anti* estão atingindo você (ou ambos!). Qual é a CPU? Você tem um rastreamento etw cobrindo o tempo de inicialização? Qual é a situação do VLF e do log, quanto log precisa ser lido?


    Resumo de comentários com respostas

    • PREEMPTIVE_OS_CREATEDIRECTORY é mostrado durante a maior parte do tempo de espera
    • usamos quatro núcleos de um Xeon Gold 6354 com 96 GB de memória; o armazenamento tem cerca de 20.000 E/S. VMware.
    • TF 9944 ajuda e agora temos startups rápidas
    • A compilação dos objetos na memória demorava 15 minutos em vez de duas horas agora
    • o banco de dados tem 800 objetos, mas apenas 100 são MEMORY_OPTIMIZED

    O que estou me perguntando agora é: como podemos evitar a recompilação das DLLs na inicialização?

    Você realmente não sabe, é assim que funciona atualmente no SQL Server. Compilar código pode/é caro, e é isso que está acontecendo aqui, ter apenas 4 processadores é o gargalo no momento.

    O SQL Server faz pontos de verificação implícitos no desligamento. Isso é bom o suficiente? Ou deveríamos chamar CHECKPOINTs explícitos antes do encerramento?

    Nenhum dos dados fornecidos mostra que isso é um problema.

    E quanto ao KB3147012? Experimentei configurar o TF 9929 além do TF 9944. Qual é a sua recomendação sobre isso?

    Deseja que o arquivo comece com um tamanho de arquivo baixo? Isso é o que 9929 faz, não vejo isso como seu problema.

    • 9
  2. NedOtter
    2024-01-31T06:11:22+08:002024-01-31T06:11:22+08:00

    Você precisa distribuir os arquivos de dados/delta por vários contêineres e distribuir esses contêineres por várias unidades. Seu gargalo provavelmente é causado pelo uso de uma única unidade para armazenar um único contêiner.

    • -1

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