Datenbanken bilden das zentrale Rückgrat nahezu jeder modernen Unternehmensanwendung. Neben der Datensicherheit und -integrität spielt auch die Hochverfügbarkeit, Lastverteilung und Geschwindigkeit eine zunehmend wichtigere Rolle.
Diese Arbeit gibt einen Überblick über die am häufigsten auftretenden Ursachen für Performanceprobleme und deren Lösungsmöglichkeiten.
Als Einstieg in die Thematik werden die erforderlichen Grundlagen aus Sicht der internen Verarbeitung von SQL-Anweisungen, der Datenverwaltung durch den SQL Server, der Möglichkeiten einer Performanceüberwachung und Leistungsmessung, sowie der technischen Systemumgebung, besprochen. Anschließend werden die vom SQL Server unterstützten Indizes, deren Verwaltung und die Rolle von Statistiken im Optimierungsprozess thematisiert. Der letzte Teil stellt die Möglichkeiten einer Daten- und Lastverteilung durch Partitionierungsmechanismen, sowie die Aspekte der SQL-Code Optimierung vor.
Als technische Grundlage dieser Arbeit dient der Microsoft SQL Server 2008. Ein Großteil der hier genannten Performanceprobleme und Lösungsansätze lässt sich aber auch auf frühere Versionen des Microsoft SQL Server, wie auch auf andere relationale Datenbanksysteme übertragen.
Inhaltsverzeichnis
- Inhaltsverzeichnis
- Begriffs- und Abkürzungsverzeichnis
- Einleitung
- Einleitung
- Grundlagen
- Optimierungsmodell
- Interne Verarbeitung von SQL-Anweisungen
- Datenverwaltung durch den SQL Server
- Datenbank
- Lesen von Datenseiten
- Schreiben von Datenseiten
- Performanceüberwachung und Leistungsmessung
- Ausführungszeit einer SQL-Anweisung messen
- Statistische Größen mittels T-SQL "SET-Anweisungen" ermitteln
- Grafische Ausführungspläne
- Der Aktivitätsmonitor
- Berichte
- Systemumgebung
- Arbeitsspeicher
- Prozessor
- Festplatten
- Festplattenarten
- RAID-Systeme
- Netzwerk
- Betriebssystem
- Datenbankmanagementsystem
- Indizes
- Grundlagen von Indizes
- Verwendung von Indizes
- HEAP - Tabelle ohne gruppierten Index
- Gruppierte Indizes (Clustered Index)
- Nicht gruppierte Indizes (Nonclustered Index)
- Eindeutige Indizes (Unique Indexes)
- Gefilterte Indizes (Filtered Indexes)
- Kombinierte Indizes (Combined Indexes)
- Abdeckende Indizes (Covering Indexes)
- Verwaltung von Indizes
- Der Füllfaktor
- Indizes reorganisieren
- Indizes neu erstellen
- Fehlende Indizes aufspüren
- Überflüssige Indizes
- Statistiken
- Statistiken anzeigen
- Statistiken anlegen
- Statistiken aktualisieren
- Gefilterte Statistiken
- Partitionierung
- Hardwareorientierte Partitionierung
- Vertikale Partitionierung
- Horizontale Partitionierung
- Abfrageoptimierung
- Aufbau einer Abfrage
- Parametrisierung
- Automatische Parametrisierung
- Erzwungene Parametrisierung
- Explizite Parametrisierung
- Parametrisierung durch gespeicherte Prozeduren
- Parametrisierungsproblematik
- Hinweise
- Abfragehinweise (Query Hints)
- Tabellenhinweise (Table Hints)
- Verknüpfungshinweise (JOIN Hints)
- Fazit
- Literaturverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Anhang
Zielsetzung und Themenschwerpunkte
Die vorliegende Bachelorarbeit befasst sich mit der Datenbank-Performance-Optimierung am Beispiel des Microsoft SQL Server 2008. Ziel ist es, einen umfassenden Überblick über die Ursachen von Performanceproblemen und deren Lösungsmöglichkeiten zu geben. Die Arbeit konzentriert sich dabei auf ausgewählte Ansätze der Performance-Optimierung, die durch interne Funktionen und Automatismen, sowie durch geeignete manuelle Maßnahmen vorgenommen werden können.
- Interne Verarbeitung von SQL-Anweisungen und Abfrageausführungspläne
- Datenverwaltung durch den SQL Server, insbesondere die Funktionsweise des E/A-Systems
- Indizierungsmöglichkeiten und deren Verwaltung
- Statistiken und ihre Auswirkung auf die Abfrageperformance
- Datenverteilung mittels Partitionierung
Zusammenfassung der Kapitel
Das zweite Kapitel gibt einen Überblick über die notwendigen Grundlagen für eine spätere Performance-Optimierung und Überwachung des Gesamtsystems. Es werden verschiedene Optimierungsphasen vorgestellt, die sich auf das Datenbankdesign, den SQL-Code, die Indizierung, Blockierungen und die Hardwareausstattung beziehen.
Im dritten Kapitel werden die technischen Voraussetzungen für eine optimale Gesamtperformance dargestellt. Es werden die wichtigsten Hardwarekomponenten, wie Arbeitsspeicher, Prozessor und Festplatten sowie deren Einfluss auf die Datenbankperformance beleuchtet. Zudem werden RAID-Systeme und deren Einsatzmöglichkeiten für Datenbanken vorgestellt.
Das vierte Kapitel widmet sich der Indizierung und deren Verwaltung. Es werden die verschiedenen Arten von Indizes, wie HEAP, gruppierte und nicht gruppierte Indizes, sowie deren Vor- und Nachteile erläutert. Zudem werden wichtige Aspekte der Indexverwaltung, wie der Füllfaktor, die Reorganisation und die Neuerstellung von Indizes, behandelt.
Das fünfte Kapitel beschäftigt sich mit Statistiken und deren Auswirkung auf die Abfrageperformance. Es werden Methoden zum Anzeigen und Anlegen von Statistiken vorgestellt, sowie die Aktualisierung von Statistiken und die Verwendung von gefilterten Statistiken erläutert.
Das sechste Kapitel behandelt das Konzept der Datenverteilung mittels Partitionierung. Es werden verschiedene Arten der Partitionierung, wie die hardwareorientierte, vertikale und horizontale Partitionierung, vorgestellt und deren Vor- und Nachteile diskutiert.
Das siebte Kapitel führt in die Thematik der Abfrageoptimierung aus Sicht des Anwendungsentwicklers ein. Es werden verschiedene Aspekte der Abfrageoptimierung, wie der Aufbau einer Abfrage, die Parametrisierung und die Verwendung von Hinweisen, behandelt.
Schlüsselwörter
Die Schlüsselwörter und Schwerpunktthemen des Textes umfassen die Datenbank-Performance-Optimierung, den Microsoft SQL Server 2008, interne Funktionen und Automatismen, manuelle Maßnahmen, Performanceüberwachung, Leistungsmessung, Datenverwaltung, Indizierung, Statistiken, Partitionierung, Abfrageoptimierung, SQL-Anweisungen, Abfrageausführungspläne, E/A-System, Arbeitsspeicher, Prozessor, Festplatten, RAID-Systeme, Netzwerk, Betriebssystem, Datenbankmanagementsystem, Tabellen, Indizes, Statistiken, Partitionierung, Abfragen, Hinweise, und viele weitere Themen im Zusammenhang mit der Performance-Optimierung von Datenbanken.
- Quote paper
- Simon Kronwitter (Author), 2011, Datenbank-Performance-Optimierung, Munich, GRIN Verlag, https://www.grin.com/document/178244