web-dev-qa-db-fra.com

SQL Server Upgrade 2008 -> 2016/100 à 130 compatibilité des requêtes lentes, le nouveau CE me tue

Récemment mis à niveau de SQL Server 2008 à 2016, fonctionnant en mode de compatibilité 100 pendant 4 mois, tout fonctionnait bien (rapide). Après une bonne partie des tests et de l'exécution du conseiller en migration, j'ai décidé d'appuyer sur le "commutateur" et de changer le niveau de compatibilité à 130 ...

Cela a eu un effet néfaste sur un bon nombre de sprocs/requêtes, dont certaines qui s'exécutent en quelques secondes prennent maintenant des minutes. Le processeur a également augmenté à cause de cela.

Ces requêtes sont bien écrites, aussi je reconstruis les index et les statistiques tous les soirs ..

Plans comparés qui se ressemblent, avec quelques pourcentages légèrement réduits, toujours le même plan! Je pense que CE n'obtient pas de bons nombres de lignes.

De plus, ce qui est bizarre parfois, les requêtes fonctionnent bien en 130, donc je pense que tout va bien, mais je reçois soudainement une alerte et la requête est prise pendant des périodes de 2 lignes différentes seulement, je dois ajouter OPTION (QUERYTRACEON 9481) pour l'obtenir rapide à nouveau.

Y a-t-il d'autres choses que je peux vérifier/faire pour aider ces requêtes à retrouver leur ancienne gloire?

Dois-je supprimer tous les plans de procédures stockées du cache ???

7
davey

Microsoft a un stratégie de mise à nivea pour changer le mode de compatibilité sur SQL Server 2016. Citant l'article lié:

Le flux de travail recommandé pour la mise à niveau du processeur de requêtes vers la dernière version du code est le suivant:

  1. Mettre à niveau une base de données vers SQL Server 2016 sans modifier le niveau de compatibilité de la base de données (conservez-le au niveau précédent)

  2. Activez le magasin de requêtes sur la base de données. Pour plus d'informations sur l'activation et l'utilisation du magasin de requêtes, voir Surveillance des performances à l'aide du magasin de requêtes.

  3. Attendez suffisamment de temps pour collecter des données représentatives de la charge de travail.

  4. Changez le niveau de compatibilité de la base de données à 130

  5. À l'aide de SQL Server Management Studio, évaluez s'il existe des régressions de performances sur des requêtes spécifiques après la modification du niveau de compatibilité

  6. Pour les cas où il y a des régressions, forcez le plan précédent dans le magasin de requêtes.

  7. S'il existe des plans de requête qui ne parviennent pas à forcer ou si les performances sont toujours insuffisantes, pensez à rétablir le niveau de compatibilité au paramètre précédent, puis à engager le support client Microsoft.

Vous pouvez essayer une version de cela pour votre situation. Remettez le mode de compatibilité à 100, activez le magasin de requêtes, passez par un cycle complet et obtenez une bonne base de référence, puis changez de mode de compatibilité et utilisez le magasin de requêtes pour analyser les requêtes qui s'exécutent mal et prendre d'autres mesures.

10
Joe Obbish