Fragensteller
Statistiken

Allgemeine Diskussion
-
Hallo @all!
Kann mir jemand ein paar Links (oder ein Buch) empfehlen in dem verständlich erläutert ist was für eine Rolle die Statistiken spielen, wie die automatisch erzeugt werden, welche Ereignisse usw. diese erzeugen...
Prinzipiell weiß ich wofür die Statistiken benötigt werden, aber wir hatten schon div. seltsame Effekte, welche nach einer Neuerstellung der Statistiken weg waren.
Da würde ich einfach gern verstehen woran das liegt.
Oder heute hab ich gesehen, dass ich zwei Statistiken auf eine Spalte habe.
Woher kommt die WA... Statistik?
Ist es der Performance der Datenbank abträglich dass es da zwei Statistiken gibt?Danke für Eure Hinweise schon mal im voraus
Grüße
Jörg
Jörg Schneider- Typ geändert Raul TalmaciuMicrosoft contingent staff Montag, 20. August 2012 09:54 Warten auf Feedback
Alle Antworten
-
Oder heute hab ich gesehen, dass ich zwei Statistiken auf eine Spalte habe.
Woher kommt die WA... Statistik?
Ist es der Performance der Datenbank abträglich dass es da zwei Statistiken gibt?Hallo Jörg,
die _WA_SYS Statistiken sind welche, die "Statistiken, die mit keinem Index verbunden sind und von Microsoft SQL Server automatisch erstellt wurden", siehe Statistikeigenschaften.
Statistiken werden ähnlich wie Indizes auf Spalten-Kombinationen angelegt, von daher ist es ganz normal, wenn es je Tabelle mehrere gibt. Mit dem Skript unten kannst Du die vorhandenen Statistiken abfragen
Grob gesagt merkt der SQL Server sich in den Statistiken die Verteilung der Werte und anhand dieser entscheidet der Query Optimizer, wie der Ausführungsplan aussehen muss. Sie die Statistike veraltet, kann es so zu suboptimalen Entscheidungen kommen, die langsam laufen. Von daher sollte man die Statistiken rühig regelmäßig mal neu aufbauen lassen.
SELECT OBJ.Name ,OBJ.type_desc ,S.Name ,S.auto_created ,S.user_created ,S.no_recompute ,COL.Name FROM sys.stats AS S INNER JOIN sys.objects AS OBJ ON S.object_id = OBJ.object_id INNER JOIN sys.stats_columns AS SC ON S.object_id = SC.object_id AND S.stats_id = SC.stats_id INNER JOIN sys.columns AS COL ON SC.object_id = COL.object_id AND SC.column_id = COL.column_id ORDER BY OBJ.Name ,S.Name ,COL.Name
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hi!
die _WA_SYS Statistiken sind welche, die "/Statistiken, die mit keinem Index verbunden sind und von Microsoft SQL Server automatisch erstellt wurden/", sieheStatistikeigenschaften <http://msdn.microsoft.com/de-de/library/ms181515(v=sql.90).aspx>.
Ok, verstehe ich.
Wenn es jetzt aber zwei Statistiken auf genau das gleiche Feld gibt. Stört das?
Konkret gibt es eine Statistik adrlfdnr (ich nehme an die wird automatisch mit / auf den Index erzeugt)
und dazu eine WA Statistik auf das gleiche Feld.
> Grob gesagt merkt der SQL Server sich in den Statistiken die Verteilung der Werte und anhand dieser entscheidet der Query Optimizer, wie der Ausführungsplan aussehen muss. Sie die Statistike veraltet, kann es so zu suboptimalen Entscheidungen kommen, die langsam laufen. Von daher sollte man die Statistiken rühig regelmäßig mal neu aufbauen lassen.Ok, klar.
Was würdet Du als regelmäßig definieren?
Täglich?
Stündlich?Danke schon mal für Deine Antwort
Am 13.08.2012 16:53, schrieb Olaf Helper:Oder heute hab ich gesehen, dass ich zwei Statistiken auf eine Spalte habe.
Woher kommt die WA*... Statistik*?
Ist es der Performance der Datenbank abträglich dass *es da zwei Statistiken*gibt?Hallo Jörg,
die _WA_SYS Statistiken sind welche, die "/Statistiken, die mit keinem Index verbunden sind und von Microsoft SQL Server automatisch erstellt wurden/", sieheStatistikeigenschaften <http://msdn.microsoft.com/de-de/library/ms181515(v=sql.90).aspx>.
Statistiken werden ähnlich wie Indizes auf Spalten-Kombinationen angelegt, von daher ist es ganz normal, wenn es je Tabelle mehrere gibt. Mit dem Skript unten kannst Du die vorhandenen Statistiken abfragen
Grob gesagt merkt der SQL Server sich in den Statistiken die Verteilung der Werte und anhand dieser entscheidet der Query Optimizer, wie der Ausführungsplan aussehen muss. Sie die Statistike veraltet, kann es so zu suboptimalen Entscheidungen kommen, die langsam laufen. Von daher sollte man die Statistiken rühig regelmäßig mal neu aufbauen lassen.SELECT OBJ.Name ,OBJ.type_desc ,S.Name ,S.auto_created ,S.user_created ,S.no_recompute ,COL.Name FROM sys.stats AS S INNER JOIN sys.objects AS OBJ ON S.object_id = OBJ.object_id INNER JOIN sys.stats_columns AS SC ON S.object_id = SC.object_id AND S.stats_id = SC.stats_id INNER JOIN sys.columns AS COL ON SC.object_id = COL.object_id AND SC.column_id = COL.column_id ORDER BY OBJ.Name ,S.Name ,COL.Name
Jörg Schneider -
Wenn es jetzt aber zwei Statistiken auf genau das gleiche Feld gibt. Stört das?
....
Ok, klar.
Was würdet Du als regelmäßig definieren?
Täglich?
Stündlich?Hallo Jörg,
es "stört" nur insoweit, das beide Statistiken wollen gepflegt sein.
Grundsätzlich werden die Statistiken ja automatisch gefüllt, vorausgesetzt man hat es nicht deaktiviert. Wie häufig es sinnvoll ist sie zu aktualisieren, hängt davon ab, wie häufig Daten geändert werden. Stündlich in m.E. übertrieben, wir lassen es einmal die Woche am Wochenende, wenn nichts los ist, aktualisieren.
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Moin moin,
in Einzelfällen können sogenannte "overlapping statistics" dazu führen, dass eine Abfrage mit einem anderen Ausführungsplan ausgeführt wird als erwartet.
Ich bin mal auf folgenden BlogPost gestoßen, der das Problem beschreibt:
http://www.kendalvandyke.com/2010/02/tale-of-two-execution-plans-solved.html
Als weiterführenden Link kann ich noch http://sqlserverpedia.com/blog/sql-server-2005/more-on-overlapping-statistics/ anbieten.
Hier verweist Kenda auch auf das Plan Caching in SQL Server 2008 Whitepaper, wo auch etwas über den Query Optimizer und multiple statistics steht.:
"Query Optimizer Decisions
An issue not directly related to the topic of this document is: given multiple statistics on the same set of columns in the same order, how does the query optimizer decide which ones to load during query optimization? The answer is not simple, but the query optimizer uses such guidelines as: Give preference to recent statistics over older statistics; Give preference to statistics computed using FULLSCAN option to those computed using sampling; and so on.
There is a potential of confusion regarding the "cause and effect" relationship between plan optimality-related compilations, recompilations, and statistics creation/updates. Recall that statistics can be created or updated manually or automatically. Only compilations and recompilations cause automatic creation or updates of statistics. On the other hand, when a statistic is created or updated (manually or automatically), there is an increased chance of recompilation of a query plan which might find that statistic "interesting.".....
"
Geht aber alles schon sehr ins Detail.
Gruß
Dirk
-
Hallo,
ist die Thematik noch aktuell?
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo,
der Spamfilter hat automatisch den Post als Missbrauch evaluiert. Es passiert manchmal so, aber natürlich ist es nicht der Fall hier.
Daher wurde es nach 30 Minuten aufgehoben.
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo!also das war mal ausführlich und mit Hilfe der Blogs hab ich jetzt mal immerhin 180 "overlapping statistics" herausgefunden und mal gelöscht.
Ich werd das nun mal beobachten wie sich das entwickelt.Soweit ist dieser Beitrag dann mal gelöst
Danke an AlleGrüße
Am 16.08.2012 11:54, schrieb Dirk Hondong:Moin moin,
in Einzelfällen können sogenannte "overlapping statistics" dazu führen, dass eine Abfrage mit einem anderen Ausführungsplan ausgeführt wird als erwartet.
Ich bin mal auf folgenden BlogPost gestoßen, der das Problem beschreibt:
http://www.kendalvandyke.com/2010/02/tale-of-two-execution-plans-solved.html
Als weiterführenden Link kann ich nochhttp://sqlserverpedia.com/blog/sql-server-2005/more-on-overlapping-statistics/ anbieten. <http://www.kendalvandyke.com/2010/02/tale-of-two-execution-plans-solved.html>
Hier verweist Kenda auch auf das Plan Caching in SQL Server 2008 Whitepaper <http://technet.microsoft.com/en-us/library/ee343986%28SQL.100%29.aspx>, wo auch etwas über den Query Optimizer und multiple statistics steht.:
"Query Optimizer Decisions
An issue not directly related to the topic of this document is: given multiple statistics on the same set of columns in the same order, how does the query optimizer decide which ones to load during query optimization? The answer is not simple, but the query optimizer uses such guidelines as: Give preference to recent statistics over older statistics; Give preference to statistics computed using FULLSCAN option to those computed using sampling; and so on.
There is a potential of confusion regarding the "cause and effect" relationship between plan optimality-related compilations, recompilations, and statistics creation/updates. Recall that statistics can be created or updated manually or automatically. Only compilations and recompilations cause automatic creation or updates of statistics. On the other hand, when a statistic is created or updated (manually or automatically), there is an increased chance of recompilation of a query plan which might find that statistic "interesting.".....
"
Geht aber alles schon sehr ins Detail.
Gruß
Dirk
Jörg Schneider