CPU inativa do SQL Server 2016 e consultas extremamente lentas

10

Eu tenho uma instalação com ~ 10 dias de idade do WinServer2012R2 e do SQL Server Express 2016 para teste. Eu sou o único usuário nesta máquina. Um banco de dados com um .bak do SQL Server 2005 de ~ 250 MB é restaurado sem problemas. Após uma reinicialização da máquina, o processo "SQL Server NT - 64 Bit" usa 0% da CPU.

Após alguns minutos ou horas e algumas consultas simples (sem atualizações / inserções!) Do uso da CPU do SSMS do "SQL Server NT - 64 Bit", de repente salta para ~ 15% e permanece lá, mesmo quando ocioso. A partir desse momento, as consultas que geralmente levam menos de um segundo demoram 2 minutos. Durante uma consulta real, o uso da CPU NÃO aumenta. O servidor se torna praticamente inutilizável nesse estado.

Somente a conexão do SQL Server Profiler leva mais de 30 segundos. Além das minhas próprias consultas, vejo apenas poucas consultas do SQLServerCEIP / SQLTELEMETRY, ~ 3 por minuto.

Reiniciar o SQL-Server não resolve. O uso da CPU volta para ~ 15%. Mesmo depois de horas, o SQL-Server não se recupera. Somente reiniciar a máquina inteira resolve o problema.

Como esta é uma instalação "pronta para uso", existe apenas um pequeno banco de dados, praticamente nenhuma consulta, apenas eu como usuário e provavelmente nenhum bloqueio, os muitos artigos sobre problemas regulares de desempenho do SQL Server falam sobre muitas coisas que não realmente não se aplica aqui. Parece que o SQL-Server quer se concentrar exclusivamente em alguma tarefa interna.

Esta é uma máquina virtual com 2 GB de RAM e dois Xeon a 2 GHz. Eu também tenho o VS2016 e é muito rápido. Nenhum antivírus, nem mesmo o Windows Defender. Já está atrasado aqui. Vou tentar o sp_whoisactive amanhã. Eu realmente me pergunto o que o SQL-Server está fazendo lá ... Na máquina anterior com 1 GB, o mesmo banco de dados foi executado no SQLServer2005 por 10 anos sem problemas ...

Eu não sou um especialista em SQL-Profiler. Onde devo começar a procurar?

Andreas Steidle
fonte
Pode ser uma instalação ruim. Considere uma nova instalação do SO e SQL. Todos os service packs. Você pode perseguir coisas assim para sempre. Se o problema persistir, você pode razoavelmente descartar a instalação.
Paparazzo
7
Você tem um antivírus instalado? Eu adicionaria uma exclusão para o executável do SQL Server, bem como arquivos MDF, NDF e LDF.
Randolph West
11
Também examinou as configurações de economia de energia?
Randolph West
Lembro-me de um comportamento semelhante de 2005 se a opção de banco de dados auto_update_statistics_asyncestava ativada.
Roger Lobo
Tente colocar o banco de dados offline e verifique o uso da CPU. Se o uso da CPU não diminuir, seu problema no mecanismo de banco de dados do servidor sql.
Muhammad Yousaf Sulahria

Respostas:

3

Como a utilização da CPU é baixa (e você tem um ótimo conjunto de CPUs), eu verificaria primeiro a pressão da memória. Com o SQL Express 2016, você está limitado a 1410 MB de memória, mas sua VM possui apenas 2 GB. Dê à sua VM 1 GB de memória e veja se isso ajuda. Você também pode verificar seu log do SQL Server se estiver paginando memória para arquivo.

Se isso não funcionar, tente definir a configuração do banco de dados LEGACY_CARDINALITY_ESTIMATION para ON. Referência: usando o nível de compatibilidade de banco de dados 130 com CE antigo no SQL Server 2016 . Nós encontramos isso com algumas de nossas atualizações; os resultados variam de acordo com cada banco de dados.

fx1974
fonte
Enquanto isso, descobri que iniciar / parar outro software com uso excessivo de memória (como o Visual Studio) piora o problema de maneira reproduzível. Então, eu confirmo que é um problema de memória - o SQL-Server começa a paginar quando está sendo comprimido demais.
Andreas Steidle