Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

14. November 2007 um 22:20

Besser nicht auf die Angabe "Query cost" verlassen

Bei einer Sache bin ich in den letzten Monaten böse reingefallen. Ich beschreibe das mal hier, vielleicht erspare ich anderen damit Kummer…

Beim SQL-Server-2005 kann man sich für einen oder mehrere SQL-Batches, die man in einem Query-Fenster hat mit einem Klick auf "Include actual query plan" den Zugriffsplan anzeigen lassen. Wenn es mehrere Zugriffspläne sind, dann bekommt man pro Query/Zugriffsplan jeweils oben den Wert "Query cost (relative to the batch)" angezeigt. Leider sind die angegebenen Prozentwerte nicht das, was ich erwartet hatte.

Nehmen wir mal an, es seien 3 Queries, für die jeweils die Werte 49%, 42% und 9% angezeigt werden. Dann muss man wissen, dass diese Prozentwerte auf den geschätzen Kosten des Optimizers beruhen. Die echten Zeiten werden nicht gemessen.
Die Prozentwerte beruhen auf den jeweiligen "Estimated Subtree Costs" des obersten Knotens des jeweiligen Ausführungsplanes.
Im Beispiel waren das die Werte 0.266, 0.225 und 0.046.

Wegen des Namens "Query cost" dachte ich, es seien die echten Kosten. Es sind aber die geschätzten Kosten auf denen der Optimizer seinen Zugriffsplan aufbaut.

Und tatsächlich musste ich erst nachmessen: Die tatsächlich gemessenen Zeiten waren in meinem Beispiel 220ms (estimated 49%), 140ms (estimated 42%) und 343ms (estimated 9%).

Resümee: Die als "Query cost" angegebenen Werte darf man nur als Hinweis nehmen, wie der Optimizer damit umging ("estimated"). Man kann daraus keine Performanceaussagen "der unterste ist der Beste" ableiten…

Wer mehr darüber erfahren will, wird auf dem Blog vom SQL Server Query Processing Team fündig.

14. November 2007 um 21:48

SyncToy v2.0 Beta – Toys for boys

Von dem relativ simplen, aber eleganten Kopiertool SyncToy kommt bald die Version 2.0 heraus. Für alle, die es nicht erwarten können, ist kürzlich die Beta bereit gestellt worden.

Mit dem Tool kann man automatisch den Inhalt von Verzeichnissen abgleichen, z.B. den Laptop mit dem Server oder eine Wechselplatte/Stick mit dem heimischen PC. Das klingt sehr begeisternd. Ich muss allerdings zugeben, dass ich exakt dafür Beyond Compare verwende. Allerdings nicht automatisch, sondern mit kritischem Blick…

Lädst Du da: SyncToy v2.0 Beta

Ich glaube, der Tipp kam ursprünglich von meinem Kollegen Matthias.
14. November 2007 um 21:35

Profiler-Traces in einer Tabelle auswerten

Im SQL-Team-Blog von Mladen PrajdiÄ wird ein guter Tipp veröffentlicht, wie man in einer Tabelle gespeicherte Profiler-Traces etwas lesbarer machen kann: Durch einen Join auf die View sys.trace_events.

Hier stehts: "Map SQL Server Profiler EventClass ID to its name in a saved trace table"

14. November 2007 um 18:59

SQL-PASS im November: Indexes und Table-Partitioning

SQL-PASSBeim nächsten Treffen der PASS-Franken geht es um das Thema "Tipps und Tricks in T-SQL". Referent ist Jürgen Leis, der bisher schon durch seine fundierten Beiträge angenehm auffiel.

Zeit: Am Dienstag, den 20.11.2007, um 18 Uhr.

Titel: Indexes und Table-Partitioning
Schweregrad: 200-400 – je nach Fragen / Diskussionen der Teilnehmer
Ich hoffe in diesem Zusammenhang, wir machen es dem Sprecher "nicht all zu leicht" ;-))

Sprecher: Jürgen Leis

Er wird besonders gerne dann von Anderen geholt, wenn diese „nicht mehr weiter wissen“ oder ein besonders kniffliges Problem zu lösen haben, oder die Performance nicht (mehr) stimmt – frei nach dem Motto: Herr Leis wird’s schon richten …

Hier findet Ihr das Profil von Jürgen Leis und seine Homepage sqlprofessionals.de.

Ort: it innovations GmbH
Thomas-Mann-Str. 59
90471 Nürnberg
Anfahrt

Gugst Du hier

|