Mittwoch, 29. Mai 2013

Inside sys.dm_db_index_usage_stats

Um die Systemperformance eines fremden Systems bewerten zu können, ist mein erster Weg immer der Abruf von Indexstatistiken. Indexe mögen zwar für die Abfrage von Daten sinnvoll sein; es kann aber bei “zu viel des Guten” auch genau zum Gegenteil führen. Insbesondere dann, wenn ein Index vom System nicht korrekt genutzt werden kann. Mein erster Anlaufpunkt bei der Analyse von Performanceengpässen ist immer die DMV [sys].[dm_db_index_usage_stats]. Mit [sys].[dm_db_index_usage_stats] ist es möglich, die Anzahl verschiedener Arten von Indexvorgängen und den Zeitpunkt auszugeben, wann die einzelnen Vorgänge zuletzt ausgeführt wurden. Diese Informationen sind für die Bewertung teurer Indexaktionen (z. B. Keylookups] relevant und können einem DBA und Programmierer sehr schnell einen Einblick in die Performancemöglichkeiten des Systems geben. Mit dem nachfolgenden Beispiel soll eine solche Analyse eines Systems an Hand der vorliegenden Werte erklärt werden.

Sonntag, 26. Mai 2013

Empfehlungen für die Vorbereitungen zum MCM SQL Server

Mit diesem Artikel möchte ich gerne ein paar Informationen für diejenigen Leute bereitstellen, die vielleicht planen, den Zertifizierungsmarathon auf sich zu nehmen. Viele MCM haben schon ihre persönlichen Tipps in ihren Blogs verewigt – einige davon habe ich mir bei meinen Vorbereitungen sehr zu Herzen genommen, andere wiederum widersprechen meiner persönlichen Art, Stoff zu lernen und den gelernten Stoff umzusetzen. Eines jedoch gleich vorweg – MCM wird man nicht nur durch Lernen; es bedarf ebenfalls einer breit aufgestellten Erfahrung in den Bereichen “Administration” und “Entwicklung” von und mit Microsoft SQL Server. Ohne diese Erfahrungen – das ist meine Überzeugung – wird  man bei den Tests mit großer Wahrscheinlichkeit scheitern. Ein weiterer wichtiger Punkt; Leidenschaft für die Arbeit mit Microsoft SQL Server. Ohne die notwendige Leidenschaft für seine Arbeit fehlt die erforderliche Motivation, sich intensiv mit einer Sache auseinander zu setzen. Wenn beides stimmt, dann sollte einer Karriere als MCM nichts mehr im Wege stehen…

Freitag, 24. Mai 2013

MCM SQL Server 2008

Dieser Artikel hat mal nicht mit Technik zu tun sondern soll ein wenig meine Freude zum Ausdruck bringen, die ich verspürt habe, als mich eine Email von Bob Taylor (Programm Director MCM Programm) erreichte: Ich habe den LAB-Test für die Zertifizierung zum MCM SQL Server 2008 bestanden. Der “Microsoft Certified Master” ist die höchste technische Auszeichnung, die Microsoft vergibt. Mit diesem Artikel möchte ich den langen – und endlich erfolgreichen – Weg noch einmal reflektieren; in der Hoffnung, dass meine Erfahrungen Anderen dabei helfen können, ebenfalls erfolgreich die MCM-Zertifizierung abzuschließen. Eines gleich vorweg: Wer erwartet, dass ich Hinweise auf Fragen, Lösungen und/oder Lösungswege gebe, den muss ich enttäuschen. Mit der Anmeldung zur MCM-Zertifizierung habe ich gleichzeitig ein NDA (Non Disclosure Agreement) akzeptiert, dass jegliche Weitergabe von Informationen über Fragen oder Lösungen untersagt.

Montag, 20. Mai 2013

Unterschied zwischen Primary Key und Clustered Index

Letzte Woche wurde ich beauftragt, die Ursachen für eine schlechte Performance innerhalb einer Datenbank zu analysieren und gegebenenfalls Hinweise zu geben, wie man die Wartezeiten im Frontend verkürzen kann. Bei der Prüfung der Ausführungspläne und Indexstrukturen ist aufgefallen, dass fast 10% der Relationen HEAPS sind und in vielen Abfragen mit anderen Relationen über JOINS verwendet wurden. Meine erste Empfehlung war demzufolge – basierend auf den Ausführungsplänen – die Implementierung und Verwendung von Clustered Indexes. Da die Anwendung nicht “in House” entwickelt worden ist, wurde sich mit der Bitte um Prüfung und Zusendung von Skripten an den Hersteller gewandt. Das nachfolgende Script soll stellvertretend für den Lösungsansatz des Herstellers dienen. Bei der im Beispiel benannten Relation handelt es sich um eine simple Relation für die Speicherung historischer Daten ohne Fremdschlüssel-Referenzen.