Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

30. September 2008 um 21:36

COUNT, aber schnell!

Über den aktuellen SQL-Pass-Newsletter wurde ich auf den absolut interessanten Trick aufmerksam, wie man sehr schnell (im Sinne von "sehr performant") die Anzahl von Datensätzen in einer Tabelle ermittelt. Aber leider ist der Autor dem gleichen Fehler aufgesessen, wie ich zu Beginn meiner SQL-Server-Zeit.

Der erwähnte Trick ist sehr ausführlich im Artikel "Speeding up the Performance of Table Counts in SQL Server 2005" beschrieben. Möglicherweise ist er mit richtig vielen Datensätzen auch wirklich schneller als COUNT, aber ich kann es mir kaum denken. Das ist aber gar nicht so wichtig, weil meine Message ist: Vorsicht vor den geschätzten Kosten. Sie sind nicht richtig.

Wenn ich den Trick ausführe und den COUNT, dann zeigt auch mein Zugriffsplan in den geschätzten Werten an, dass der Trick schneller sei (der Code ist aus dem Artikel abgeleitet, nur leicht vereinfacht):

-- Trick:
SELECT SUM( p.rows )
FROM sys.partitions p
LEFT JOIN sys.allocation_units a
ON p.partition_id = a.container_id
WHERE p.index_id IN (0,1) – 0 heap table , 1 table with clustered index
AND p.rows IS NOT NULL
AND a.type = 1 – row-data only , not LOB
AND p.object_id = object_id('Person.Address')
– Hat "estimated subtree cost" von 0.028
go
– regulär:
SELECT COUNT(*)
FROM Person.Address
– Hat "estimated subtree cost" von 0.055

Wegen der "estimated subtree cost" zeigt das Management-Studio an, dass der erste Batch 33% der Zeit und der zweite 67% in Anspruch nähme. Das stimmt aber gar nicht. Der SQL-Profiler bringt es ans Licht: Der erste Batch dauert 35ms und der zweite nur 9ms. Der Prozentwert im Management-Studio spiegelt nur die geschätzten Kosten wieder. Wenn man die echte Zeit wissen will, dann muss man schon zu Kommissar Profiler gehen… 😉

PS: Schade, dass der Autor weder Kommentare zuließ, noch eine Mail-Adresse angab. Daraus schließe ich, dass er keinen Dialog wünscht. Ist das eine zulässige Annahme?

PPS: Ich sehe gerade, dass sich Steffen Krause ein paar Tage vorher mit dem gleichen Thema beschäftigte. Welch lustige Koinzidenz – er berücksichtigt aber die BLOBs nicht.

30. September 2008 um 19:00

VS Developer- und Database-Edition werden zu einem Produkt

Heute veröffentliche Microsoft eine Pressemitteilung in der alle möglichen tolles Features des Visual-Studio-2010 veröffentlicht werden. Das ist schon interessant, aber was mich glatt von Sockel haute: Die Developer- und Database-Editionen werden zu einem Produkt! Die Database-Edition ist einfach klasse, aber wahnwitzig teuer, weil die meisten Entwickler ohnehin auch schon die Developer-Edition haben. Das kam bei Microsoft inzwischen wohl auch an. Ich bin ziemlich aus dem Häuschen, weil uns damit das Leben zukünftig schon gewaltig erleichtert wird.

In VSTS 2010 werden die derzeit separat verfügbaren Development Edition und Database Edition miteinander zu einem einzelnen Produkt kombiniert. Um den Vorteil dieser Kombination schon jetzt zur Verfügung zu stellen, erhalten alle Software Assurance-Kunden und Besitzer einer Version von Visual Studio Team System 2008 (Developer oder Database Edition) die jeweils andere Vollversion ab 1. Oktober 2008 kostenlos.

Ich bin mir nicht sicher, ob das gut oder schlecht ist. Es ist gut, weil wir die Database-Editon aus Kostengründen nicht in der Firma hätten verteilen können. Es ist schlecht, weil damit die Database-Edition faktisch aufhört zu existieren. Wer weiß, ob die Weiterentwicklung der Database-Teile weiterhin so voran getrieben wird. Wer alles davon profitiert beschriebt Gerd Drapers in seinem Blog:

As an MSDN subscriber we want you to realize the benefit of this merged feature set now, which is why we are extending this exclusive offer. If you have either the Visual Studio Team System 2008 Development Edition with MSDN Premium subscription or the Visual Studio Team System 2008 Database Edition with MSDN Premium subscription, on October 1, 2008 you will have access to both the Development Edition and Database Edition through MSDN Subscriber Downloads. This change also applies to customers who purchased Visual Studio 2005 Team Edition for Software Developers with MSDN Premium Subscription and Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription.

Der Blog-Artikel hat den Titel "Team Developer + Team Data = Team Developer!". Ich finde, sein Artikel klingt weniger nach Enthusiasmus als nach Wehmut. Das drückt mir dann schon eine Träne aus dem Knopfloch…

|