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?
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_FINDFILE
indicaPREEMPTIVE_OS_CREATEDIRECTORY
contençã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
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.
Nenhum dos dados fornecidos mostra que isso é um problema.
Deseja que o arquivo comece com um tamanho de arquivo baixo? Isso é o que 9929 faz, não vejo isso como seu problema.
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.