L'exécution d'une base de données SQL Server 2005 au niveau de compatibilité 80 a-t-elle un impact négatif sur les performances ?

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

Question

Notre logiciel doit pouvoir fonctionner sur SQL Server 2000 et 2005.Pour simplifier le développement, nous exécutons nos bases de données SQL Server 2005 au niveau de compatibilité 80.Cependant, les performances des bases de données semblent plus lentes sur SQL 2005 que sur SQL 2000 dans certains cas (nous ne l'avons pas encore confirmé à l'aide de benchmarks).La mise à niveau du niveau de compatibilité à 90 améliorerait-elle les performances sur les serveurs SQL 2005 ?

Était-ce utile?

La solution

Je pense avoir lu quelque part que le moteur de base de données SQL Server 2005 devrait être environ 30 % plus rapide que le moteur SQL Server 2000.Il se peut que vous deviez exécuter votre base de données en mode de compatibilité 90 pour bénéficier de ces avantages.

Mais je suis tombé sur deux scénarios, dans lesquels les performances peuvent chuter considérablement lors de l'utilisation de mssql 2005 par rapport à mssql 2000 :

  1. Reniflage des paramètres :Lorsque vous utilisez une procédure stockée, le serveur SQL calculera exactement un plan d'exécution à la fois, vous appelez d'abord la procédure.Le plan d'exécution dépend des valeurs des paramètres données pour cet appel.Dans notre cas, des procédures qui prenaient normalement environ 10 secondes s'exécutent pendant des heures sous mssql 2005.Regarde ici et ici.

  2. Lors de l'utilisation de requêtes distribuées, mssql 2005 se comporte différemment en ce qui concerne les hypothèses concernant l'ordre de tri sur le serveur distant.Le comportement par défaut est que le serveur copie toutes les tables distantes impliquées dans une requête dans la base de données tempdb locale, puis exécute les jointures localement.La solution de contournement consiste à utiliser OPENQUERY, où vous pouvez contrôler exactement quel ensemble de résultats est transféré depuis le serveur distant.

Autres conseils

après avoir déplacé les bases de données vers 2005, avez-vous

mettre à jour les statistiques avec une analyse complète ?reconstruit les index?

essayez d'abord cela, puis vérifiez à nouveau les performances

Également pour information, si vous exécutez le niveau de compatibilité 90, certaines choses ne sont plus prises en charge, comme les jointures externes à l'ancienne. (*= and =*)

Utilises-tu sous-sélectionne dans vos requêtes ?

D'après mon expérience, une instruction SELECT avec des sous-sélections qui fonctionne correctement sur SQL Server 2000 peut être explorée sur SQL Server 2005 (cela peut être 10 fois plus lent !).

Faites une expérience : réécrivez une requête pour éliminer les sous-sélections et voyez comment ses performances changent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top