Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Messen der Abfrageleistung:Abfragekosten des Ausführungsplans vs. Zeitaufwand

Der Profiler-Trace relativiert es.

  • Abfrage A:1,3 Sekunden CPU, 1,4 Sekunden Dauer
  • Abfrage B:2,3 Sekunden CPU, 1,2 Sekunden Dauer

Abfrage B verwendet Parallelität:CPU> Dauerz. B. die Abfrage verwendet 2 CPUs, durchschnittlich jeweils 1,15 Sekunden

Abfrage A ist wahrscheinlich nicht:CPU

Dies erklärt die Kosten im Verhältnis zum Batch:17 % des einfacheren, nicht parallelen Abfrageplans.

Der Optimierer stellt fest, dass Abfrage B teurer ist und von der Parallelität profitiert, obwohl dies zusätzlichen Aufwand erfordert.

Denken Sie jedoch daran, dass Abfrage B etwa eine Sekunde lang 100 % von 2 CPUs (also 50 % bei 4 CPUs) verwendet. Abfrage A verwendet 1,5 Sekunden lang 100 % einer einzelnen CPU.

Die Spitze für Abfrage A ist niedriger, auf Kosten einer längeren Dauer. Wen interessiert das bei einem Benutzer? Bei 100 macht es vielleicht einen Unterschied...