web-dev-qa-db-fra.com

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

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% 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 exclusivement souhaite se concentrer sur une tâche interne.

Ceci est une machine virtuelle avec 2 Go RAM et double Xeon à 2 GHz. J'ai également VS2016 dessus et c'est vraiment rapide. Pas d'antivirus, pas même Windows Defender. Déjà en retard ici. Je vais essayer le sp_whoisactive demain. Je me demande vraiment ce que SQL-Server IS fait 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èmes ...

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

9
Andreas Steidle

Étant donné que votre utilisation du processeur est faible (et que vous disposez d'un excellent ensemble de processeurs), je voudrais d'abord vérifier la pression de la mémoire. Avec SQL Express 2016, vous êtes limité à 1410 Mo de mémoire, mais votre VM n'a que 2 Go. Donnez à votre VM 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: tilisation 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.

3
fx1974