none
Einsatz vom Datenbank-Optimierungsratgeber RRS feed

  • Frage

  • Hallo

    Wie nutzt ihr dieses Tool im täglichen Einsatz? Es ist ja schon verlockend, wenn da eine Verbesserung von 60% angegeben wird und das durch vieleicht 20-40 Stat/Index-Einträge gemacht werden kann.

    Prüft Ihr da jeden einzelnen oder lässt ihr einfach alles laufen mit der Hoffnung, dass es schon richtig kommt?

    Gruss Christoph

    Mittwoch, 31. März 2010 08:26

Antworten

  • Hallo Christoph,

    eigentlich eher fast gar nicht; zumal man eh nicht täglich Änderungen vornimmt.

    Die "Verbesserung" bezieht sich ja auch nur auf das eine auszuwertende Sql Statement (oder eine ganze Ablaufverfolgung aus dem Profiler) mit den Filterwerten und der aktuellen Verteilungsstatistik. Nur wenn die Filterwerte laut Statistik die Daten auf mindestens 25% oder weniger einschränkt, wird dann der Index verwendet.
    Was der Ratgeber auch nicht dazu schreibt, ist um wieviel langsamer dann Inserts / Updates bei Dir werden; schließlich müssen dann die ganzen Indizes + Statistiken aktualisiert werden.
    Da gilt die goldene Regel: So viele Indizes wie nötig, so wenige wie möglich.

    Man kann meines Erachtens den Ratgeber ruhig mal laufen lassen, es sind aber eben nur Ratschläge und man sollte immer prüfen, ob die Indizes/Stats wirklich nötig sind.

    Das Design der Indizes legt man schon mit dem Tabellen- und Applikationsnetwurf fest; da überlegt man sich schon, was wie im Standard-Fall abgefragt wird.
    Natürlich sollte man dann während der Entwicklung und dem späteren Betrieb kontrollieren, ob alles performant läuft.
    Fehlende Indizes werden seit der Version 2005 über die View dm_db_missing_index_... aufgeführt und welche Indizes wie oft verwendet wurde in dm_db_index_usage_stats.
    Setzt voraus, das die Datenbank schon etwas "einfahren" ist, damit man aufschlußreiche Werte erhält.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Mittwoch, 31. März 2010 09:02
  • Hallo Christoph,

    ich nutze ihn nur, wenn ich eine vollkommen unbekannte Datenbank
    vor die Nase gesetzt bekomme.
    Für "Eigengewächse" und bekannte verwende ich ihn eher selten.

    Übernehmen sollte man die Ergebnisse niemals unbesehen.
    Denn der Ratgeber kann nur so gut sein, wie die Eingangsdaten,
    die man ihm vorsetzt. Im Kern tut er nichts anderes als eine
    statistische Analyse vorzunehmen. Und die Ergebnisse sind
    bekanntlich auch anderswo nur so gut, wie die Frage, die man stellt.

    Folglich gilt es darauf zu achten, dass man einen repräsentativen
    Mitschnitt verwendet, der das tägliche Geschäft widerspiegelt.
    Und empfehlenswert ist es, sich dabei auf einzelne Bereiche zu konzentrieren.

    Denn faktisch kostet am Ende jeder Index auch, da er gepflegt werden muß.
    Und ob die Leistungsverbesserung diese Kosten im Gesamten aufwiegt,
    kann der Ratgeber nur sehr eingeschränkt beurteilen.

    Für die tägliche Arbeit kann man die Ausführungspläne im SSMS verwenden,
    wo man beim SSMS Hinweise auf (mögliche) fehlende Indizes bekommt.
    Wobei man auch da nicht blind allem folgen sollte, siehe z. B.:
    http://msmvps.com/blogs/robfarley/archive/2008/10/12/missing-index-in-sql-server-2008-should-try-harder.aspx
    .

    Spätestens mißtrauisch sollte man werden, wenn dabei eben mal (fast) alle
    Spalten via INCLUDE einbettet werden um eine Verbesserung zu erzielen.

    Gruß Elmar

    Mittwoch, 31. März 2010 09:08
    Beantworter

Alle Antworten

  • Hallo Christoph,

    eigentlich eher fast gar nicht; zumal man eh nicht täglich Änderungen vornimmt.

    Die "Verbesserung" bezieht sich ja auch nur auf das eine auszuwertende Sql Statement (oder eine ganze Ablaufverfolgung aus dem Profiler) mit den Filterwerten und der aktuellen Verteilungsstatistik. Nur wenn die Filterwerte laut Statistik die Daten auf mindestens 25% oder weniger einschränkt, wird dann der Index verwendet.
    Was der Ratgeber auch nicht dazu schreibt, ist um wieviel langsamer dann Inserts / Updates bei Dir werden; schließlich müssen dann die ganzen Indizes + Statistiken aktualisiert werden.
    Da gilt die goldene Regel: So viele Indizes wie nötig, so wenige wie möglich.

    Man kann meines Erachtens den Ratgeber ruhig mal laufen lassen, es sind aber eben nur Ratschläge und man sollte immer prüfen, ob die Indizes/Stats wirklich nötig sind.

    Das Design der Indizes legt man schon mit dem Tabellen- und Applikationsnetwurf fest; da überlegt man sich schon, was wie im Standard-Fall abgefragt wird.
    Natürlich sollte man dann während der Entwicklung und dem späteren Betrieb kontrollieren, ob alles performant läuft.
    Fehlende Indizes werden seit der Version 2005 über die View dm_db_missing_index_... aufgeführt und welche Indizes wie oft verwendet wurde in dm_db_index_usage_stats.
    Setzt voraus, das die Datenbank schon etwas "einfahren" ist, damit man aufschlußreiche Werte erhält.


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Mittwoch, 31. März 2010 09:02
  • Hallo Christoph,

    ich nutze ihn nur, wenn ich eine vollkommen unbekannte Datenbank
    vor die Nase gesetzt bekomme.
    Für "Eigengewächse" und bekannte verwende ich ihn eher selten.

    Übernehmen sollte man die Ergebnisse niemals unbesehen.
    Denn der Ratgeber kann nur so gut sein, wie die Eingangsdaten,
    die man ihm vorsetzt. Im Kern tut er nichts anderes als eine
    statistische Analyse vorzunehmen. Und die Ergebnisse sind
    bekanntlich auch anderswo nur so gut, wie die Frage, die man stellt.

    Folglich gilt es darauf zu achten, dass man einen repräsentativen
    Mitschnitt verwendet, der das tägliche Geschäft widerspiegelt.
    Und empfehlenswert ist es, sich dabei auf einzelne Bereiche zu konzentrieren.

    Denn faktisch kostet am Ende jeder Index auch, da er gepflegt werden muß.
    Und ob die Leistungsverbesserung diese Kosten im Gesamten aufwiegt,
    kann der Ratgeber nur sehr eingeschränkt beurteilen.

    Für die tägliche Arbeit kann man die Ausführungspläne im SSMS verwenden,
    wo man beim SSMS Hinweise auf (mögliche) fehlende Indizes bekommt.
    Wobei man auch da nicht blind allem folgen sollte, siehe z. B.:
    http://msmvps.com/blogs/robfarley/archive/2008/10/12/missing-index-in-sql-server-2008-should-try-harder.aspx
    .

    Spätestens mißtrauisch sollte man werden, wenn dabei eben mal (fast) alle
    Spalten via INCLUDE einbettet werden um eine Verbesserung zu erzielen.

    Gruß Elmar

    Mittwoch, 31. März 2010 09:08
    Beantworter
  • Hallo zusammen

    Danke für Eure Tipps. Ich habe jetzt mal über DMV's die schlimmsten fehlenden Indizes bestimmt und werde das so händisch weitermachen.

     

    Gruss Christoph

    Donnerstag, 1. April 2010 07:02