Announcement

Collapse
No announcement yet.

[MSSQL] Dauer/Laufzeitberechnung von Statements im Voraus!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [MSSQL] Dauer/Laufzeitberechnung von Statements im Voraus!

    Hallo,
    ich habe ein größeres Projekt für das ich die Laufzeiten von Statements im Voraus berechnen möchte. Die Statements werden über eine GUI zusammengeklickt und werden dadurch mitunter sehr komplex. Der User brauch daher eine grobe Zeitabschätzung über die Dauer, die er auf die Antwort warten muss. Sind es ein paar Sekunden, eine halbe Stunde oder doch eher ein paar Stunden.

    Nun meine Frage:
    Kennt jemand gute Quellen, mit deren Hilfe ich mich in das Thema einarbeiten könnte?
    Alterativ würde ich natürlich hier eine kleine Diskussion anstoßen. Wovon hängt die Laufzeit eines Statements ab?
    • Anzahl der JOINs
    • Anzahl der unterschiedlichen beteiligten Tabellen
    • Größe der beteiligten Tabellen
    • Komplexität der WHERE-Bedingung ("id=5" oder eher "name LIKE '%foo%'")
    • Indizes
    • verwendete Hardware

    Was wisst ihr noch, bzw. wie stark kann man die einzelnen Einflussfaktoren bewerten?

    Über jede Hilfe dankbar,
    Dominik

  • #2
    Hallo,

    in die Liste muss noch der Grad der Fragementierung der Datenbankdatei, der Tabellen und Indizes aufgenommen werden. Dazu käme noch die Kardinalität einer Index-Spalte und und und.

    Man könnte zwar vor jedem Ausführen über SET SHOWPLAN_ALL ON nur den Query Plan für die Abfrage ermitteln lassen, aber das sich aus diesem Ergebnis eine brauchbare Hochrechnung der Ausführungszeit ableiten lässt, glaube ich nicht.
    Zuletzt editiert von Andreas Kosch; 01.07.2007, 07:52.

    Comment


    • #3
      Erstmal vielen Dank für die Antwort.
      Ich habe mich jetzt einige Zeit mit SHOWPLAN_XML auseinandergesetzt und versuche die einzelnen Komponenten zu verstehen:
      HTML Code:
      <StmtSimple StatementText="SELECT * &#xD;&#xA;FROM ContactPerson&#xD;&#xA;WHERE LocationID = '4';" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="0.0033205" StatementEstRows="17.027" StatementOptmLevel="TRIVIAL">
                <StatementSetOptions QUOTED_IDENTIFIER="false" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="false" ANSI_NULLS="false" ANSI_PADDING="false" ANSI_WARNINGS="false" NUMERIC_ROUNDABORT="false" />
      ...
      </StmtSimple>         
      Ich finde aber nirgends eine vernünftige Auflistung der Elemente und Attribute mit Beschreibung.
      Ich denke besonders interessant hört sich hier StatementSubTreeCost an. Gibt dieses Attribut eine Zeit an, wie lange die Abfrage laufen wird (vielleicht in Sekunden) oder was sagt mir die Zahl 0.0033205?

      Kennt sich jemand damit aus? Es würde mir natürlich auch ein Link reichen, am besten aus dem msdn-Bereich, auf dem ich mich selber schlau machen kann.

      Das Prinzip ist mir klar:
      http://msdn2.microsoft.com/de-de/library/ms187757.aspx

      Nur was bedeuten die ganzen Werte? Das muss doch irgendwo dokumentiert sein!

      Vielen Dank im Vorraus,
      Dominik

      Comment

      Working...
      X