
Herzlich Willkommen zu diesem Seminar
In diesem Seminar geht es um die Optimierung Deines SQL Servers und der darauf laufenden und zugreifenden Datenbankanwendungen.
Seit vielen Jahren beschäftige ich mich mit der Problemlösung und Optimierung von Datenbanken für kleine, mittlere und große bis sehr große Unternehmen.
Was meine ich damit?
Eine Datenbank ist so lange unauffällig, wie sie ohne Probleme läuft. Also Abfragen schnell ausgeführt werden und damit die Anwender auch schnell Ihre Ergebnisse bekommen.
Sobald allerdings Abfragen, Berichte oder Rechnungsläufe etc. ewig lange brauchen wird vielfach erst klar wie brisant die Probleme diesbezüglich sind.
Langsame Datenbanken, Blockierungen innerhalb von Datenbanken bis hin zu Datenbankausfällen.
Immer wieder ist mir in meiner täglichen Praxis aufgefallen, dass die Ursachen für die unterschiedlichsten Probleme immer die gleichen sind.
Keine korrekt gesetzten Indizes, höchste Fragmentierungen da keinerlei Wartungspläne, komplett veraltete Statistiken, falsch eingestellte Parallelisierungsoptionen oder fehlerhafte Dateiplatzierungen etc.
In vielen Fällen sind die auftretenden Probleme bereits gelöst oder abgemildert, wenn ganz simple Dinge beachtet werden.
Diese simplen Dinge habe ich in den -10 Punkten die Deinen SQL Server schneller machen- zusammengefasst.
PerformanceCheckliste
Hier findest Du die zum Kurs gehörige PerformanceCheckliste.pdf, die es Dir leichter macht, die im Kurs erläuterten 10 Punkte die Deinen SQL Server schneller machen abzuarbeiten.
Du kannst Dir diese Liste für Deine Unterlagen ausdrucken.
Datenbanken die im Kurs verwendet wurden.
Lege Dir die Datenbanken im Management Studio an um die Beispiele des Kurses nachzuvollziehen.
Hier findest Du die in diesem Kurs verwendeten Datenbanken Demo und AdventureWorks.
Die Datenbank AdventureWorks ist die offizielle Demodatenbank von Microsoft für den SQL Server.
Die Datenbank Demo gibt es hier auch als T-SQL Skript.
Du kannst wenn Du die Demo.bak nicht nutzen möchtest, das Skript Demo_Skript.sql downloaden und im Sql Server Management Studio öffnen und ausführen.
Folgende Schritte sind dann notwendig:
1. Lege Dir eine Datenbank Demo im SSMS an.
2. Öffne das Skript im SSMS und führe es aus.
Die Demo.bak Datei ist ein SQL Server Backup. Diese kannst Du ganz normal mittels wiederherstellen einspielen. Das Skript ist dann nicht notwendig.
Wir arbeiten in den einzelnen Kapiteln überwiegend mit dem SQL Server Management Studio (SSMS) und manchmal auch mit dem SQL Server Konfigurations-Manager
SQL Server Management Studio
Ist das Hauptverwaltrungstool für SQL Server. Es ermöglicht Administratoren, Entwicklern, Datenbankdesignern oder Anwendern das arbeiten und verwalten von SQL Server.
SSMS muss separat installiert werden. Es war zwar früher automatisch in den Setup Dateien von SQL Server enthalten dies ist allerdings lange nicht mehr der Fall. Bei der Installation von SQL Server wird aber darauf hingewiesen wo Du Dir das Management Studio downloaden kannst.
Unter nachfolgenden Link hast Du die Möglichkeit SQL Server Management Studio herunterzuladen.
https://learn.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16
SQL Server Konfigurationsmanager
Ist das Tool um die SQL Server Dienste zu verwalten oder zu konfigurieren. Wir nutzen den Konfigurationsmanager ausschließlich dazu, SQL Server neu zu starten.
Wenn Du den Menüpunkt zum Aufruf von SQL Konfigurations-Manager nicht findest, kannst Du in der Suche danach suchen um diesen zu starten. Beachte aber, dass Du die richtige Version deines SQL Servers berücksichtigst um den zugehörigen Konfigurations-Manager aufzurufen.
Wenn Du also einen SQL Server 2022 hast und Du möchtest den zugehörigen Konfigurations-Manager aufrufen. Musst Du in der Suche SQLServerManager16.msc eingeben.
Hier die SQL Server Versionsabhängige Auflistung der zugehörigen Kofigurationsmanager Suche
SQLServerManager16.msc für [SQL Server 2022]
SQLServerManager15.msc für [SQL Server 2019]
SQLServerManager14.msc für [SQL Server 2017]
SQLServerManager13.msc für [SQL Server 2016]
SQLServerManager12.msc für [SQL Server 2014]
SQLServerManager11.msc für [SQL Server 2012]
SQLServerManager10.msc für [SQL Server 2008]
Die Systemdatenbank tempdb verdient besondere Aufmerksamkeit, ist sie doch eine wichtige Systemdatenbank, die die Leistung Deines SQL Servers beeinflusst.
Generell kann man sagen. Eine schnelle tempdb beschleunigt SQL Server und eine langsame tempdb verlangsamt diesen auch.
Warum?
Weil die tempdb sozusagen der lokale Arbeitscache von SQL Server ist und SQL Server in der tempdb für die unterschiedlichsten Operationen Daten zwischenspeichert.
Es ist natürlich klar, dass wenn das lesen und schreiben dieser Auslagerungsdaten langsam ist auch der dahinter liegende Vorgang sich verlangsamt.
Demzufolge ist es ein wichtiger Punkt die tempdb optimal zu konfigurieren, da dies Auswirkungen auf die gesamte SQL Server Instanz und alle darauf betriebenen Anwendungen und Datenbanken hat.
Verschieben oder besser umziehen der tempdb auf eine neue Position
In vielen Fällen liegen die Dateien der tempdb im Setup Standardverzeichnis irgendwo auf der Platte C:\ gemischt mit anderen System- und Benutzerdatenbanken.
Das ist absolut nicht zu empfehlen und aus diesem Grunde ist es nach Überprüfung dieses Punktes notwendig , die Dateien auf einen eigenständigen, hoch performanten Datenträger mit viel Platz umzuziehen.
Da SQL Server die tempdb bei jedem Start neu anlegt, brauchst Du SQL Server nur zu sagen wo er die tempdb beim nächsten Start anlegen soll. Dies wird per Skript gemacht und ich zeige Dir hier wie das geht.
tempdb Dateien hinzufügen und wieder löschen
In vielen Konfigurationen ist es notwendig, die Anzahl der Datendateien aus denen die tempdb besteht anzupassen. Wie das gemacht wird und welche Regeln es dafür gibt zeige ich Dir hier.
Für ein Datenbanksystem ist es entscheidend wie schnell und mit welchem Aufwand Daten in die Datenbankdateien auf der Platte geschrieben und auch wieder gelesen werden können. Man spricht hier von den sogenannten I/O (Input- Output) oder im deutschen von E/A Eingabe- und Ausgabevorgängen. Diese sind entscheidend für eine hohe oder niedrige Leistung von SQL Server. Es ist also wichtig, dass die Dateien einer Datenbank auf entsprechenden schnellen Festplatten liegen sollten. Ist dies nicht der Fall, bremst das die Leistung enorm.
Hier zeige ich Dir wie Du Änderungen an der Platzierung von Datenbankdateien vornimmst und was Du beachten solltest.
Die zweite Variante Datenbankdateien zu verschieben, ist es dies im Management Studio zu erledigen. Diese Variante zeige ich Dir hier.
Wenn Datenbankdateien vergrößert werden müssen, da die Daten die SQL Server darin speichern möchte keinen Platz mehr haben, muss dieser Prozess angestoßen werden. SQL Server erledigt dies automatisch. Die Sache hat nur einen Haken. Es kostet Zeit. Dies wird auffällig, wenn SQL Server innerhalb kürzester Zeit viele viele Vergrößerungen vornehmen muss.
Demzufolge sollten diese Vorgänge angepasst werden, damit dies nicht so oft passiert und wenn doch, dann sollte es sehr schnell gehen.
Darum geht es in diesem Kapitel
Hier zeige ich Dir, wie und wo Du ganz konkret die Einstellungen bezüglich Dateivergrößerung vornimmst.
Du kannst diese Einstellungen im Management Studio vornehmen und damit den Prozess der Dateivergrößerung optimieren.
Ein wesentliches Feature den Vorgang der Dateivergrößerung erheblich zu beschleunigen ist das aktivieren der Sofortigen Dateiinitialisierung.
Wenn SQL Server eine größere Datei braucht um Daten zu speichern, muss er dies beim Betriebssystem in Auftrag geben.
Dieses überprüft die Möglichkeit vergrößert die Datei und füllt die vergrößerte Datei mit Nullern auf. Das kostet bei größeren Blöcken Zeit oder es summiert sich bei häufigen Vergrößerungen dahingehend auf, dass der Gesamtdurchsatz in Mitleidenschaft gezogen wird.
Hier zeige ich Dir, wie Du die -Sofortige Dateiinitialisierung- aktivierst. Was bedeutet das? Ganz einfach, die vergrößerte Datei wird nicht mehr mit Nullern initialisiert und damit ist der Vergrößerungsprozess super schnell.
Das muss aber erst einmal aktiviert werden.
In diesem Cheatsheet findest Du noch einmal die wesentlichen Informationen zur Dateivergrößerung zusammen gefasst.
Beim Optimieren von Datenbanken gibt es ein wesentliches Element. Statistiken.
Dort stehen die Daten über die Daten der Datenbank in Form Informationen (Histogrammen etc.) für SQL Server von denen er es abhängig macht wie die Ausführungspläne für die eigentlichen Abfragen aufgebaut werden.
Statistiken verwaltet SQL Server automatisch aber wie könnte es anders sein, gibt es auch hier wesentliche Dinge zu beachten.
Grundsätzlich kann man sagen. Schlechte Statistiken gleich schlechte Performance.
Hier findest Du zusammengefasst wesentliche Informationen zum Thema Datenbankeinstellungen Statistiken.
Fragmentierte Daten sind nicht nur in SQL Server problematisch. Fragmentierung beeinflusst massiv die Performance zum negativen hin und sollte auf jeden Fall beseitigt werden.
Dieser Prozess muss regelmäßig durchgeführt werden und ich zeige Dir hier wie das gemacht wird.
Eine Datenbank fragmentiert sehr schnell wenn regelmäßig Daten gelöscht und wieder hinzugefügt werden.
Im Gegensatz zu Statistiken, gibt es hier keinerlei interne automatische Prozesse die grundsätzlich ausgeführt werden.
Der Datenbankbetreuer kann mittels Wartungsplan die Datenbank proaktiv pflegen.
Ich zeige Dir hier wie das gemacht wird.
Eine Zusammenfassung wichtiger Informationen rund um die Thematik Defragmentierung inklusive manueller Befehle hierzu.
Auch Statistiken sollten mittels Wartungsplan proaktiv gepflegt werden. Was es damit auf sich hat erkläre ich Dir hier.
Hier zeige ich Dir wie Du ganz konkret einen Wartungsplan für Statistiken anlegst.
Dieser Punkt wird in Datenbanken kaum beachtet. Es ist auch kein Wunder, da die Option Kompatibilitätsgrad sehr versteckt ist. Dennoch ist es ein wichtiges Thema, da mit dem jeweiligen Kompatibilitätsgrad der SQL Server Version Funktionen an und ausgeschaltet werden.
Du solltest unbedingt checken unter welchem Kompatibilitätsgrad Deine Datenbank läuft. Es ist durchaus möglich, das Dein SQL Server 2022 mit den Features und Algorithmen einer 2008 Datenbank betrieben wird und das möchte man in der Regel nicht.
Ein Überprüfung einer Datenbank ob diese mit dem nächst höheren Kompatibilitätsgrades betrieben werden darf, kann sehr umfangreich sein. Mit dem kostenlosen Data Migration Assistenten von Microsoft, zeige ich Dir wie Du das überprüfen und eine Menge Zeit sparen kannst.
Wichtige Informationen rund um den Kompatibilitätsgrad.
Indizes beschleunigen in einer Datenbank Abfragen massiv. Hier gebe ich Dir wichtige Informationen rund um die Thematik. Interessant ist es auch festzustellen ob in der Datenbank mit schlechter Leistung überhaupt Indizes fehlen? Hier zeige ich Dir wie Du das herausbekommst.
Hier erfährst Du die absoluten Basics rund um das Thema Indizes. Wie kann man sich einen Index vorstellen und wie arbeitet so ein Index im Datenbanksystem?
Zwei wesentliche Indexarten in SQL Server sind der gruppierte und der nicht gruppierte Index in SQL Server. Ich erkläre Dir hier, was der Unterschied ist und wie Du Dir immer wieder herleiten kannst, was die Unterschiede sind.
Hier zeige ich Dir an ganz einfachen Beispielen wie Indizes arbeiten und nach welchen Regeln SQL Server bestimmte Indizes nutzt und andere wiederum nicht. Du wirst sehen, es ist eigentlich ganz einfach und logisch.
Du kennst jetzt zwar die Regeln wie Indizes erstellt werden und nach welchem Prinzip SQL Server diese auswählt, allerdings ist es trotzdem schwierig für eine komplexe Produktivanwendung alle passenden Indizes zu finden.
Eine derartige Anwendung hat in der Regel hunderte bis tausende unterschiedliche Anweisungen, die von den einzelnen Datenbankclients generiert werden. Wenn man hier anfängt manuell, effektive Indizes zu erstellen die nicht redundante Spalten und Informationen enthalten sollen, steht man vor einer fast nicht zu bewältigenden Aufgabe. Zumindest sollte man in diesem Fall eine Menge Zeit mitbringen.
Aus diesem Grund gibt es bei SQL Server entsprechende Tools wie den SQL Profiler und den Datenbankoptimierungsratgeber und ich zeige Dir hier wie Du diese einsetzt und Dir von SQL Server selbst die Indexempfehlungen die er gerne hätte generieren lässt.
Wie das gemacht wird zeige ich Dir hier.
In diesem Kurs behandeln wir 10 wichtige Punkte die Du beachten solltest, wenn Du Deinen Microsoft SQL Server bzw. die Datenbanken und Anwendungen die darauf laufen schneller machen möchtest.
Statistiken, Indizes, Dateiplatzierung und Dateivergrößerung, tempdb Konfiguration, Speicheroptimierung, Defragmentierung, Wartungspläne, Kompatibilitätsgrade sind alles wichtige Einstellungen die Du, um Deinen SQL Server und damit die Datenbankanwendungen die darauf zugreifen zu beschleunigen konfigurieren solltest.
Diese 10 Punkte sind entscheidend und wichtige Einstellungen für eine optimierte Performance und Problembeseitigung bzw. Vorbeugung für SQL Server.
Es hat sich in meiner Praxistätigkeit als Datenbankoptimierer immer wieder herausgestellt, dass Datenbanken die Probleme machen (also in der Regel zu langsam sind), diese Punkte nicht beachtet haben bzw. die Standardeinstellungen nach der Installation beibehalten wurden.
Wenn Du diese Punkte beachtest und umsetzt wird Dein SQL Server mit seinen Datenbanken effizienter, effektiver, performanter arbeiten.
Schnellere Abfragen, weniger Blockierungen, wesentlich mehr Durchsatz und natürlich zufriedene Anwender sind das Ergebnis.
In diesem Kurs werden Dir die Informationen, Anweisungen und Beispiele gegeben damit Du in der Lage bist sämtliche Einstellungen selbst vorzunehmen. Es werden Dir die Hintergründe erklärt warum die Einstellungen gemacht werden sollten.
Beispielskripte, Erklärungen und Demos zeigen Dir wie Du die Einstellungen selbst vornehmen kannst.
Du erhältst Checklisten und Dokumente, die Du für Deinen täglichen Aufgaben hinsichtlich des stabilen, performanten Betriebs von SQL Server einsetzen kannst.