Christoph Muthmann
Architektur und Administration
Architektur und Administration
Jul 13th
Falls es auf der Platte mal eng wird, kann man mit Data-Compression (Daten-Komprimierung) einige Objekte verkleinern und wieder Platz schaffen. Allerdings setzt dieses Feature die Enterprise Edition vorraus.
Doch sollte man nicht übersehen, dass der eigentliche Vorteil dieser Option darin besteht, das IO-Geschäft zu beschleunigen und damit den Abfragen, die sich mit großen Tabellen beschäftigen mal etwas Beine zu machen.
Vorraussetzung für den sinnvollen Einsatz von Data-Compression ist aber nicht nur die Enterprise Edition, sondern auch noch verfügbare CPU-Zeit, da Data-Compression das IO-Geschäft durch eine erhöhte Rechenleistung reduziert.
In meinem Produktionsumfeld gab es einen Join über 23 Tabellen, von denen jede ca. 2 GB groß war. Das Ergebnis dieses Joins waren ca. 15 GB, die in eine neue Tabelle geschrieben wurden. Der Server verfügt über 32 GB RAM. Normalerweise benötigte diese Abfrage ca. 14 Stunden und die CPU-Belastung währenddessen kam über 10% kaum hinaus. Wir haben dies nun so umgestellt, dass alle zugrundeliegenden Tabellen auf PAGE-Ebene komprimiert werden. Die Abfrage benötigt jetzt weniger als zwei Stunden und die CPU-Belastung lag bei ca. 30%.
In der Online-Doku gibt es ausführliche Informationen zur Komprimierung. Hier möchte ich nur einige wenige Code-Schipsel beitragen um mal die Richtung vorzugeben:
Welche Objekte gibt es und wie ist die Komprimierung eingestellt?
SELECT o.OBJECT_ID,
S.name AS [schema],
o.name AS [Object],
I.index_id AS Ix_id,
I.name AS IxName,
I.type_desc AS IxType,
P.partition_number AS P_No,
P.data_compression_desc AS Compression
FROM sys.schemas AS S
JOIN sys.objects AS O
ON S.schema_id = O.schema_id
JOIN sys.indexes AS I
ON o.OBJECT_ID = I.OBJECT_ID
JOIN sys.partitions AS P
ON I.OBJECT_ID = P.OBJECT_ID
AND I.index_id= p.index_id
WHERE O.TYPE = 'U'
ORDER BY [schema], [object], i.index_id;
Welche Einsparungen habe ich bei der einen oder anderen Komprimierungs-Methode zu erwarten?
EXEC sp_estimate_data_compression_savings 'dbo','meineTabelle',NULL,NULL,'PAGE';
EXEC sp_estimate_data_compression_savings 'dbo','meineTabelle',NULL,NULL,'ROW';
Wie kann ich Objekte komprimieren?
ALTER TABLE dbo.meineTabelle rebuild WITH (data_Compression = PAGE);
-- Indizes
ALTER INDEX IX_meineTabelle_1 ON dbo.meineTabelle rebuild WITH (data_Compression = PAGE);
Die Daten-Komprimierung ist also neben Indizes eine weitere Möglichkeit Abfragen zu beschleunigen, indem die IO-Last reduziert wird.
Jul 9th
Das vorliegende Buch reiht sich in die Reihe der Inside-Bücher (ab Version 6.5) ein und hat nun wegen Überschneidung mit anderen Publikationen den Titel auf "Internals" gewechselt. Und darum geht es auch wirklich!
Der Untertitel lautet: Insiderwissen zur Verbesserung der Systemleistung
Dieses Buch kann als technische Referenz auch für die Entwickler von SQL Server angesehen werden und beschreibt viele interne Abläufe und Zusammenhänge, die ich sonst so zusammenhängend noch nirgendwo dokumentiert gesehen habe.
Das Buch will kein How-To mit Screenshots vermitteln, sondern der Fokus wird gezielt auf die Hintergründe gelegt. Demzufolge ist es auch nicht verwunderlich, dass sich nur eine Handvoll Screenshots im Buch wiederfinden. Dafür wird das im Text gesagte durch eine ganze Reihe grafischer Darstellungen von Zugriffsplänen und Unmengen von Grafiken und Tabellen ergänzt.
Das Inhaltsverzeichnis lässt bereits ahnen, um welche Kernthemen es geht:
Inhaltsverzeichnis:
Die vollständige Liste der Kapitel und Abschnitte findet sich hier!
Für dieses Buchprojekt standen verschiedene Autoren mit ihren Schwerpunkten Pate. Neben Kalen Delaney (von ihr stammen die Vorgänger-Insider-Bücher) findet sich Paul Randall, der Autor von DBCC; seine Frau Kimberley Tripp, die ich bisher von einigen Sessions zur Index-Optimierung kannte, Conor Cunningham als leitender Architekt des SQL Server Core Engine-Teams (und demzufolge früherer Kollege von Paul Randall) sowie Adam Machanic als unabhängiger Datenbankberater. Als Fachgutachter, der auf die Stimmigkeit des Inhalts geschaut hat, fungierte Ben Nevarez, nachdem er in Kalens letztem Buch zur Storage Engine einige durchgerutschte Fehler und leichte Inkonsistenzen gefunden hatte. Kalen, Paul, Kimberley und Adam sind außerdem SQL Server MVPs und in der Community sehr engagiert.
Die Kapitel stammen also von unterschiedlichen Autoren und bauen auch nicht unbedingt aufeinander auf. Allerdings verweisen sie aufeinander, so dass an der ein oder anderen Stelle auf die detaillierte Schilderung eines gerade nicht so wichtigen Themas verzichtet werden konnte und stattdessen lieber ein Hinweis auf eine andere Stelle im Buch erfolgt. Das Kapitel zu Mechanismen und Verwaltung von Indizes wurde als Gemeinschaftsprojekt erstellt und Teile davon hat Kimberley bereits auf der PASS Summit 2008 vorgestellt.
Man kann sich vorstellen, dass die hier vorgestellten Hintergründe technisch schon recht anspruchsvoll sind, sie werden aber immer wieder durch anschauliche Beispiele ergänzt um z. B. die interne Verwaltung von Tabellen und Indizes kennen zu lernen. Weiterhin gibt es Anleitungen zur Nutzung der Systemsichten und des Systemmonitors für weitere Analysen, so dass man nicht nur staunend davorsteht, sondern das gelernte auch direkt am eigenen System verifizieren kann.
Man kann das Buch nicht einfach so herunterlesen, da es doch recht anspruchsvolle Kost darstellt, aber wann immer man sich mit dem ein oder anderen Thema im Projektalltag beschäftigen muss, lohnt sich ein entsprechender Blick auf das oder die Kapitel in dem Buch. Nicht jeder benötigt Details zur Speicherung großer Objekte oder Filestream, auch verteilen sich die 90 Seiten über den Abfrageoptimierer auch auf so Themen wie verteilte Abfragen und Data Warehouses. Man kann also auch innerhalb der Kapitel immer mal ein Thema auslassen und bekommt doch wichtige Tipps und Hintergründe für die eigene Vorgehensweise. Insofern sollte man sich vom Umfang mit 818 Seiten nicht abschrecken lassen.
Abgerundet wird das Buch durch Referenzen auf ergänzende Informationen wie z. B. das Begleitmaterial mit den Code-Stücken und weitere Verweise auf Blog-Einträge. Der bei Microsoft-Press vorhandene Hinweis auf "CD-ROM PC" deckt sich leider nicht mit der Realität. Es ist keine CD dabei, aber es gibt ja die oben erwähnte Web-Site mit dem Begleitmaterial. Es wäre natürlich schön gewesen, wie in früheren Jahren, zumindest die englische Version auch als pdf auf der CD zu haben, aber das ist leider nicht so.
Insgesamt ist das vorliegende Werk ein absolut empfehlenswertes Buch, was Wissen aus erster Hand vermittelt und auch bei den Entwicklern des SQL Servers als technische Referenz herangezogen wird.
Jul 7th
Glenn Berry ist ein Database Architect bei NewsGator Technologies in Denver, CO. Er ist auch SQL Server MVP und vor kurzem hatten wir einen interessanten Austausch über Beobachtung von SQL Servern. Von ihm stammt ein ganzes Bündel von SQLs, was ich minimal ergänzt habe. Freundlicherweise hat er mir gestattet, das Skript SQL Server 2008 Diagnostic Information Queries mit Hinweis auf seinen blog zu veröffentlichen.
Zuerst werden einige serverweite Informationen zusammengetragen und ungefähr in der Mitte des Skripts kann man auf eine User-Datenbank umschwenken und diese genauer analysieren lassen.
Mir war z. B. gar nicht die große Anzahl von Ad Hoc Abfragen auf meiner Datenbank bewußt, wobei die Ursache aber eine neue Software-Version war, die nicht überall parametrisierte Statements verwendete.
Auch ein intensiver Blick auf die Nützlichkeit der Indizes ist von Zeit zu Zeit sinnvoll, da sich die Mengenverhältnisse und Abfragen verändern können.
Im Skript selber gibt es einige Hinweise, worauf bei diesen Punkten zu achten ist und teilweise auch die Erläuterung für die Rückgabewerte der DMVs, wie sie auch in der Oline-Doku zu finden sind.
Wer die Ergebnisse dann in die Excel-Datei Blank SQL Server 2008 Diagnostic Results überträgt, erhält auch noch einen guten Überblick über die einzelnen Abschnitte.
Alles in allem auf jeden Fall mal ein schneller Überblick, den man von Zeit zu Zeit wiederholen sollte.
Jun 25th
June 8, 2010 - At Microsoft BI conference during
keynote presentation by Ted Kummert (Senior Vice President, Business Platform Division) Amir Netz (Distinguished Engineer and lead Architect of the Microsoft Business Intelligence offerings) presented first information on what to
expect in next PowerPivot release.
Jun 24th
Auch wenn wir immer noch auf die offizielle Mail mit den Informationen über den Download der Sessions warten, so können zumindest die Fotos nun schon angesehen werden. Wie versprochen kommt hier ein Bild aus der SQL-Kitchen. Dort bin ich (im Hintergrund) mit Grzegorz Stolecki zu sehen. Grzegorz ist ein polnischer MVP, der diese Aktion mit unterstützt hat. Weiterhin war noch Damian Widera ebenfalls aus Polen dabei.