J'ai exécuté des tests de vitesse sur une requête où j'insère 10 000 enregistrements dans une table contenant des millions (plus de 24 mil) d'enregistrements. La requête (ci-dessous) n'introduira pas d'enregistrements en double.Temps d'exécution sporadique pour la requête dans SQL Server 2008
MERGE INTO [dbo].[tbl1] AS tbl
USING (SELECT col2,col3, max(col4) col4, max(col5) col5, max(col6) col6 FROM #tmp group by col2, col3) AS src
ON (tbl.col2 = src.col2 AND tbl.col3 = src.col3)
WHEN NOT MATCHED THEN
INSERT (col2,col3,col4,col5,col6)
VALUES (src.col2,src.col3,src.col4,src.col5,src.col6);
Les temps d'exécution de la requête ci-dessus sont sporadiques; allant de 0:02 secondes à 2:00 minutes. J'exécute ces tests dans SQL Server Studio via un script qui créera les 10 000 lignes de données (dans la table #tmp), puis la requête MERGE ci-dessus est déclenchée. Le point étant, le même script exact s'exécute pour chaque test que je cours.
Le temps d'exécution rebondissent autour de secondes à quelques minutes, comme dans:
- Test n ° 1: 0:10 secondes
- Test n ° 2: 1:13 minutes
- Essai n ° 3: 0: 02 secondes
- test n ° 4: 1:56 minutes
- test n ° 5: 0:05 secondes
- test n ° 6: 1:22 minutes
Une métrique que je trouve intéressante est que la séquence alternée de secondes/minutes est relativement cohérente - c'est-à-dire que tous les autres tests les résultats sont en secondes.
Pouvez-vous me donner des indices quant à ce qui pourrait causer des temps d'exécution si sporadiques?
Avez-vous éliminé d'autres possibilités: la latence du réseau, DB est parfois très occupé à répondre à d'autres demandes, etc.? –
Cela semble étrangement familier w/[ma question] (http://stackoverflow.com/questions/4600883/sql-2005-connection-using-classic-ado-from-windows-2008-yields-odd-performance). Je serai intéressé de voir si vous comprenez ce qui se passe. –
@Jeff - Le DB réside sur la même machine que SQL Studio, donc il ne devrait pas y avoir de souci pour la latence du réseau, non? En ce qui concerne l'élimination d'autres possibilités, je ne sais même pas par où commencer. – Jed