none
Statistiken RRS feed

  • 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
    Montag, 13. August 2012 13:47

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

    Montag, 13. August 2012 14:53
  • 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
    Montag, 13. August 2012 15:34
  • 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

    Montag, 13. August 2012 16:11
  • 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

    Donnerstag, 16. August 2012 09:54
  • Off-Topic

    Mir ist jetzt nicht ganz klar, warum mein Beitrag als Missbrauch gemeldet wurde. Ggf könnte mich da jemand kurz aufklären.

    Danke und Gruß

    Donnerstag, 16. August 2012 16:15
  • warum mein Beitrag als Missbrauch gemeldet wurde

    Finde ich allerdings auch merkwürdig / unerklärlich

    Olaf Helper
    Blog Xing

    Donnerstag, 16. August 2012 16:23
  • 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,
    Raul


    Raul 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.

    Montag, 20. August 2012 09:11

  • 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 Alle

    Grüß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
    Montag, 20. August 2012 12:26