Benutzer mit den meisten Antworten
Einsatz vom Datenbank-Optimierungsratgeber

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
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- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:48
-
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:48
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- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:48
-
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:48