Processeur SQL Server 2016 au ralenti élevé et requêtes extrêmement lentes


10

J'ai une installation de ~ 10 jours de WinServer2012R2 et SQL Server Express 2016 pour les tests. Je suis le seul utilisateur de cette machine. Une base de données avec un .bak de SQL Server 2005 de ~ 250 Mo est restaurée sans aucun problème. Après un redémarrage de la machine, le processus "SQL Server NT - 64 bits" utilise 0% de CPU.

Après quelques minutes ou heures et quelques requêtes simples (pas de mises à jour / insertions!) À partir de l'utilisation du processeur SSMS de "SQL Server NT - 64 bits" saute soudainement à ~ 15% et y reste, même lorsqu'il est inactif. À partir de ce moment, les requêtes qui prennent généralement moins d'une seconde prennent soudainement 2 minutes. Lors d'une requête réelle, l'utilisation du processeur n'augmente PAS. Le serveur devient pratiquement inutilisable dans cet état.

Seule la connexion de SQL Server Profiler prend alors> 30 secondes. À côté de mes propres requêtes, je ne vois que très peu de requêtes de SQLServerCEIP / SQLTELEMETRY, ~ 3 par minute.

Le redémarrage de SQL-Server ne le résout pas. L'utilisation du processeur revient à ~ 15%. Même après les heures, SQL-Server ne récupère pas. Seul le redémarrage de la machine entière résout le problème.

Comme il s'agit d'une installation "prête à l'emploi", il n'y a qu'une petite base de données, pratiquement pas de requêtes, seulement moi en tant qu'utilisateur et probablement pas de verrous, les nombreux articles sur les problèmes de performances réguliers de SQL-Server parlent de beaucoup de choses qui ne ne s'appliquent pas vraiment ici. Il semble que SQL-Server veuille exclusivement se concentrer sur une tâche interne.

Il s'agit d'une machine virtuelle avec 2 Go de RAM et double Xeon à 2 GHz. J'ai aussi VS2016 dessus et c'est vraiment rapide. Pas d'antivirus, pas même Windows Defender. Déjà en retard ici. J'essaierai le sp_whoisactive demain. Je me demande vraiment ce que fait SQL-Server là-bas ... Sur la machine précédente avec 1 Go, la même base de données a fonctionné sous SQLServer2005 pendant 10 ans sans problème ...

Je ne suis pas un expert SQL-Profiler. Où dois-je commencer à chercher?


Cela pourrait être une mauvaise installation. Envisagez une nouvelle installation du système d'exploitation et de SQL. Tous les Service Packs. Vous pouvez chasser des trucs comme ça pour toujours. Si le problème persiste, vous pouvez raisonnablement ignorer l'installation.
paparazzo

7
Avez-vous un antivirus installé? J'ajouterais une exclusion pour l'exécutable SQL Server, ainsi que pour les fichiers MDF, NDF et LDF.
Randolph West

1
Avez-vous également examiné les paramètres d'économie d'énergie?
Randolph West

Je me souviens d'un comportement similaire de 2005 si l'option de base de données auto_update_statistics_asyncétait activée.
Roger Wolf

Essayez de mettre la base de données hors ligne et vérifiez l'utilisation du processeur. Si l'utilisation du processeur ne descend pas, son problème de moteur de base de données du serveur SQL.
Muhammad Yousaf Sulahria

Réponses:


3

Étant donné que votre utilisation du processeur est faible (et que vous disposez d'un excellent ensemble de processeurs), je vérifierais d'abord la pression de la mémoire. Avec SQL Express 2016, vous êtes limité à 1410 Mo de mémoire, mais votre machine virtuelle ne dispose que de 2 Go. Donnez à votre machine virtuelle 1 Go de mémoire supplémentaire et voyez si cela aide. Vous pouvez également vérifier votre journal SQL Server s'il s'agit de paginer la mémoire dans un fichier.

Si cela ne fonctionne pas, essayez de définir le paramètre de base de données LEGACY_CARDINALITY_ESTIMATION sur ON. Référence: utilisation du niveau de compatibilité DB 130 avec l'ancien CE dans SQL Server 2016 . Nous avons rencontré cela avec certaines de nos mises à niveau; les résultats varieront avec chaque base de données.


Entre-temps, j'ai constaté que le démarrage / l'arrêt d'un autre logiciel avec une utilisation excessive de la mémoire (comme Visual Studio) aggrave le problème de manière reproductible. Je confirme donc qu'il s'agit d'un problème de mémoire - SQL-Server commence la pagination lorsqu'il est trop pressé.
Andreas Steidle

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.