|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
J'ai remarqué que dans des requêtes complexes, SQL Server 2008 R2 générait des plans d'exécution différents et moins performants que dans la version 2005.
Les test ont été effectués sur des machines identiques, les statistiques ont été recalculées en FULLSCAN sur les deux serveurs. Est-ce que d'autres personnes ont remarqué cela ? |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Est-ce que la distribution de données est la même ? Est-ce que les index on le même niveau de fragmentation ? Est-ce que la machine est la même ? @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
1) Distribution de données : de quoi s'agit-il ?
2) Index défragmenté toutes les nuits 3) A peu près. En SQL 2005 on a 4 processeurs et en 2008 une douzaine. Ca va plus vite sur celle à 4 processeurs. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Salut Phillipe,
Est ce que tu as par exemple une requête type qui était plus rapide sur SQL Server 2005 et moins rapide sur SQL Server 2008 pour pouvoir réellement comparer. - Avec le plan d'exécution p - Avec les statistiques d'exécution (IO et TIME) ++ |
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : décembre 2002 Messages : 82 ![]() |
Bonjour,
La différence entre le 2005 et le 2008, c'est le nombre de CPU. Quel est la valeur "max degree of parallelism" sur chaque server ? Cdt, |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
J'ai bien entendu les requêtes en question mais je ne pense pas avoir le droit de les communiquer sur un forum public.
Quant aux processeurs : sur notre serveur de production SQL 2008 R2 12 dont les 9 premiers réservé au service SQL. Max degree of parallelism est fixé à 6. Quant au sql 2005 de test, les 4 processeurs peuvent être utilisés par SQL et Max degree of parallelism est à sa valeur par defaut 0. Cependant, la requête ne fait pas de parallélisme, seul un processeur est utilisé que ce soit sur le 2005 et le 2008. |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
La définition de la requête importe peu en fait ici.
Seul les résultats de SET STATISTICS IO ET TIME (sur l'ancien et le nouveau) peuvent nous indiquer quelque chose. ++ |
|
00
|
|
|
#8 |
![]() ![]() ![]() |
Est qu'il y'a le même nombre de disques sur les deux serveurs ?
Peux-tu nous faire un comparatif des ressources CPU, RAM et Disques ?
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#9 | |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Citation:
Table 'Worktable'. Nombre d'analyses 17222, lectures logiques 487465, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T1'. Nombre d'analyses 99007, lectures logiques 590535, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T2'. Nombre d'analyses 4, lectures logiques 1523745, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T3'. Nombre d'analyses 8, lectures logiques 40840, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T4'. Nombre d'analyses 0, lectures logiques 8, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T5'. Nombre d'analyses 2, lectures logiques 4, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T6'. Nombre d'analyses 2, lectures logiques 10, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T7'. Nombre d'analyses 1, lectures logiques 1486, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T8'. Nombre d'analyses 0, lectures logiques 3982, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T9'. Nombre d'analyses 1, lectures logiques 8, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. SQL Server \endash Temps d'exécution*: , Temps UC = 29500*ms, temps écoulé = 30806*ms. En SQL 2008 R2 Table 'Worktable'. Nombre d'analyses 18125, lectures logiques 1155495, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T1'. Nombre d'analyses 3, lectures logiques 305298, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T2'. Nombre d'analyses 4, lectures logiques 3189041, lectures physiques 114, lectures anticipées 18465, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T3'. Nombre d'analyses 912, lectures logiques 39080, lectures physiques 6, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T4'. Nombre d'analyses 0, lectures logiques 1834, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T5'. Nombre d'analyses 2, lectures logiques 4, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T6'. Nombre d'analyses 2, lectures logiques 10, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T7'. Nombre d'analyses 1, lectures logiques 1513, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T8'. Nombre d'analyses 0, lectures logiques 4881, lectures physiques 7, lectures anticipées 1710, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. Table 'T9'. Nombre d'analyses 1, lectures logiques 8, lectures physiques 0, lectures anticipées 18, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0. SQL Server \endash Temps d'exécution*: , Temps UC = 58329*ms, temps écoulé = 70784*ms. |
|
|
|
00
|
|
|
#10 | |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Citation:
OS Windows 2008 R2 Enterprise 16 GB Ram 4 Processeurs Intel Xeon SQL 2005 SP3 Enterprise Base de données sur un SAN. TempDB sur C:\ Sur le SQL 2008 R2 de production 72 GB de Ram dont 50 GB pour le SQL OS Windows 2008 R2 Enterprise SQL 2008 R2 Enterprise Base de données sur un SAN, dont la principale est splitée sur plusieur disque (1 pour les données, 1 pour les index et un autre pour le fichier log) 12 Processeurs Intel Xeon dont les 9 premiers réservés à l'instance SQL TempBD localisée seule sur un disque SSD de 100 GB. |
|
|
|
00
|
|
|
#11 | |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Il manque le temps cpu et temps d'exécution pour SQL Server 2008.
++ Citation:
|
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Mikedavem m'a un peu pris de vitesse
Tu fais quelques lectures de pages anticipées, mais cela n'explique pas la différence. Si tu peux, postes le plan d'exécution réel (attention il contient le texte de la requête), ou bien une capture d'écran ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#13 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Récemment j'ai montré que SQL 2008 dans certaines versions se plantait dans les plans de requêtes.
Si vous comparez les deux plans et que dans l'un est fait un SEEK alors que dans l'autre (2008) c'est un scan, forcez le plan avec un FORCESEEK ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#14 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
|
|
|
00
|
|
|
#15 | |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Citation:
Mais effectivement cela change par exemple un Clustered Index Scan en Recherche de Clés Clustered. Toutefois, merci de m'avoir communiqué cette option car je ne la connaissais pas. |
|
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Est ce que ça influe aussi sur le nombre de lectures logiques ? Car on constate qu'elles sont 2 à 3 fois plus élevées en 2008.
|
|
|
00
|
|
|
#17 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Citation:
Je suis excessivement réticent à mettre des indicateurs de table, mais je n'ai parfois pas eu d'autre choix (je ne travaille que sous SQL Server 2008) @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() |
Testez avec un MAXDOP 1 sur les deux requêtes pour exclure un problème de multithread....
pouvez vous exécuter les deux requêtes deux fois et poster le résultat des deux derniers passage respectif?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com