<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/6.11.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Uwe Ricken - Neueste Kommentare auf Bedeutung von aktuellen Statistiken für Indexe</title>
		<link>https://www.insidesql.org/blogs/uricken/?disp=comments</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.insidesql.org/blogs/uricken/?tempskin=_rss2&#38;disp=comments&#38;p=3516" />
		<description></description>
		<language>de-DE</language>
		<docs>http://backend.userland.com/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=6.11.7-stable"/>
		<ttl>60</ttl>
		<item>
			<title> Uwe Ricken in Antwort auf: Bedeutung von aktuellen Statistiken für Indexe</title>
			<pubDate>Sun, 23 Jun 2013 12:42:09 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_2273">Uwe Ricken</span></dc:creator>
			<guid isPermaLink="false">c2273@https://www.insidesql.org/blogs/</guid>
			<description>Hallo Christian,

danke für&#039;s Lesen meines Artikels und das er Dir gefallen hat.
Statistiken sind IMMER am Index gebunden (ich lasse hier jetzt mal die &quot;AutoStatistics&quot; a&#039; la _WA_SYS_ komplett aussen vor!)

Was mir bei partitionierten Tabellen jedoch aufgefallen ist:
- die Statistiken werden bei einem REBUILD eines partitionierten Index nicht korrekt berechnet!
- ein separater UPDATE STATISTICS berechnet dann die korrekten Werte

Ich werde versuchen, nächste Woche noch mal einen Artikel über dieses Verhalten zu schreiben.
Kann man aber sehr gut selbst ausprobieren:

-- Erstellen der Partitionsfunktion
CREATE PARTITION FUNCTION demo_col5 (date)
 AS RANGE LEFT FOR
 VALUES (&#039;20130622&#039;, &#039;20130623&#039;, &#039;20130624&#039;, &#039;20130625&#039;, &#039;20130626&#039;, &#039;20130627&#039;, &#039;20130628&#039;, &#039;20130629&#039;);
 GO

 -- Erstellen des Partitionsschemas
 CREATE PARTITION SCHEME part_demo_col5
 AS PARTITION demo_col5
 ALL TO ([PRIMARY]);

 -- Partitionierung der Relation
 DROP INDEX ix_demo_col5 ON dbo.demo;
 GO

 CREATE INDEX ix_demo_col5 ON dbo.demo (col5)
 ON part_demo_col5 (col5);

-- ein paar Daten ändern
UPDATE dbo.demo
SET	col5 = getdate()
WHERE	Id &amp;lt;= 4;

-- Wie sind die Statistiken?
DBCC SHOW_STATISTICS (&#039;dbo.demo&#039;, &#039;ix_demo_col5&#039;) WITH HISTOGRAM;

-- nun werden die Statistiken neu erstellt
UPDATE STATISTICS dbo.demo  ix_demo_col5 WITH FULLSCAN;

-- Und...
-- Wie sind die Statistiken?
DBCC SHOW_STATISTICS (&#039;dbo.demo&#039;, &#039;ix_demo_col5&#039;) WITH HISTOGRAM;

-- nun wird der Index neu erstellt!
ALTER INDEX ix_demo_col5 ON dbo.demo REBUILD;

-- Wie sehen die Statistiken aus?
DBCC SHOW_STATISTICS (&#039;dbo.demo&#039;, &#039;ix_demo_col5&#039;) WITH HISTOGRAM;

Man kann sehr gut erkennen, dass beim UPDATE STATISTICS die korrekten Daten ausgegeben werden, bei einem REBUILD werden sie gesampled obwohl ich einen FULLSCAN eingegeben habe.
Ich werde das mal näher untersuchen und mit einem Ergebnis hier bloggen...
Bin jetzt selbst gespannt, woran das liegt :)</description>
			<content:encoded><![CDATA[Hallo Christian,

danke für's Lesen meines Artikels und das er Dir gefallen hat.
Statistiken sind IMMER am Index gebunden (ich lasse hier jetzt mal die "AutoStatistics" a' la _WA_SYS_ komplett aussen vor!)

Was mir bei partitionierten Tabellen jedoch aufgefallen ist:
- die Statistiken werden bei einem REBUILD eines partitionierten Index nicht korrekt berechnet!
- ein separater UPDATE STATISTICS berechnet dann die korrekten Werte

Ich werde versuchen, nächste Woche noch mal einen Artikel über dieses Verhalten zu schreiben.
Kann man aber sehr gut selbst ausprobieren:

-- Erstellen der Partitionsfunktion
CREATE PARTITION FUNCTION demo_col5 (date)
 AS RANGE LEFT FOR
 VALUES ('20130622', '20130623', '20130624', '20130625', '20130626', '20130627', '20130628', '20130629');
 GO

 -- Erstellen des Partitionsschemas
 CREATE PARTITION SCHEME part_demo_col5
 AS PARTITION demo_col5
 ALL TO ([PRIMARY]);

 -- Partitionierung der Relation
 DROP INDEX ix_demo_col5 ON dbo.demo;
 GO

 CREATE INDEX ix_demo_col5 ON dbo.demo (col5)
 ON part_demo_col5 (col5);

-- ein paar Daten ändern
UPDATE dbo.demo
SET	col5 = getdate()
WHERE	Id &lt;= 4;

-- Wie sind die Statistiken?
DBCC SHOW_STATISTICS ('dbo.demo', 'ix_demo_col5') WITH HISTOGRAM;

-- nun werden die Statistiken neu erstellt
UPDATE STATISTICS dbo.demo  ix_demo_col5 WITH FULLSCAN;

-- Und...
-- Wie sind die Statistiken?
DBCC SHOW_STATISTICS ('dbo.demo', 'ix_demo_col5') WITH HISTOGRAM;

-- nun wird der Index neu erstellt!
ALTER INDEX ix_demo_col5 ON dbo.demo REBUILD;

-- Wie sehen die Statistiken aus?
DBCC SHOW_STATISTICS ('dbo.demo', 'ix_demo_col5') WITH HISTOGRAM;

Man kann sehr gut erkennen, dass beim UPDATE STATISTICS die korrekten Daten ausgegeben werden, bei einem REBUILD werden sie gesampled obwohl ich einen FULLSCAN eingegeben habe.
Ich werde das mal näher untersuchen und mit einem Ergebnis hier bloggen...
Bin jetzt selbst gespannt, woran das liegt :)]]></content:encoded>
			<link>https://www.insidesql.org/blogs/uricken/2013/06/22/bedeutung-von-aktuellen-statistiken-fuer#c2273</link>
		</item>
		<item>
			<title> Christian Gräfe in Antwort auf: Bedeutung von aktuellen Statistiken für Indexe</title>
			<pubDate>Sun, 23 Jun 2013 08:18:48 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_2272">Christian Gräfe</span></dc:creator>
			<guid isPermaLink="false">c2272@https://www.insidesql.org/blogs/</guid>
			<description>Hallo Uwe,

danke für den excellenten Artikel. 
Bei uns in der Firma betreiben wir große Datenbanken (100GB +) mit Partitionen. Wir richten die meisten Indexe an den Partitionen aus, was den Vorteil hat das nur Indexe mit sich ändernden Daten einen Reorg bzw Rebuild unterlaufen müssen.
Wie verhält es sich hier mit den Statistiken? Hängen diese direkte an dem partitionierten Index oder gehen diese über den kompletten Datenbestand.

Gruß
Christian</description>
			<content:encoded><![CDATA[Hallo Uwe,

danke für den excellenten Artikel. 
Bei uns in der Firma betreiben wir große Datenbanken (100GB +) mit Partitionen. Wir richten die meisten Indexe an den Partitionen aus, was den Vorteil hat das nur Indexe mit sich ändernden Daten einen Reorg bzw Rebuild unterlaufen müssen.
Wie verhält es sich hier mit den Statistiken? Hängen diese direkte an dem partitionierten Index oder gehen diese über den kompletten Datenbestand.

Gruß
Christian]]></content:encoded>
			<link>https://www.insidesql.org/blogs/uricken/2013/06/22/bedeutung-von-aktuellen-statistiken-fuer#c2272</link>
		</item>
			</channel>
</rss>
