36,99 €
Bachelorarbeit aus dem Jahr 2011 im Fachbereich Informatik - Wirtschaftsinformatik, Note: 1,0, Fachhochschule Regensburg, Sprache: Deutsch, Abstract: 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.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Veröffentlichungsjahr: 2011
Impressum:
Copyright (c) 2015 GRIN Verlag / Open Publishing GmbH, alle Inhalte urheberrechtlich geschützt. Kopieren und verbreiten nur mit Genehmigung des Verlags.
Bei GRIN macht sich Ihr Wissen bezahlt! Wir veröffentlichen kostenlos Ihre Haus-, Bachelor- und Masterarbeiten.
Jetzt bei www.grin.com hochladen und weltweit publizieren.
Hinweise
Die vorliegende Arbeit stellt eine fachliche Ausarbeitung dar, weshalb Grundkenntnisse im Computer- und Datenbankbereich vorausgesetzt werden.
Ein Großteil der aufgezeigten Beispiele und Performancetests beruht auf der von Microsoft zur Verfügung gestellten Beispieldatenbank„Contoso BI Demo Dataset for Retail Industry“, im Folgenden nur noch als „Contoso“ bezeichnet. Diese Datenbank kann kostenlos aus dem Internet heruntergeladen werden[1].
Für sämtliche Beispiele und Tests wurde die Microsoft SQL Server 2008 Enterprise Edition verwendet. Eine 180-Tage lang verwendbare Testversion kann ebenfalls aus dem Internet heruntergeladen werden[2].
Soweit möglich, wurde versucht unnötige Fremdwörter zu vermeiden und die Begriffe der deutschen Originaldokumentation zu verwenden. In den meisten Fachtexten und Büchern werden die englischen Bezeichnungen bevorzugt, weshalb eine gewisse Vermischung von deutschen und englischen Begriffen im weiteren Text vorkommen kann.
Alle in dieser Arbeit verwendeten Firmen- und/oder Produktnamen sind Warenzeichen und/oder eingetragene Warenzeichen ihrer jeweiligen Hersteller in ihren Märkten und/oder Ländern.
Zusammenfassung
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.
Abstract
Databases form the central backbone of almost every modern business application. The high availability, load distribution and performance play an increasingly important role besides the data security and integrity.
This thesis gives an overview of the most frequent causes for performance problems and their possible solutions.
As introduction to the theme, the necessary basics from the perspective of the internal processing of SQL statements, the data management through the SQL Server, the possibilities of performance monitoring and measurement, as well as the system environment are being discussed. Afterwards, the thesis describes the supported indices and the role of statistics in the optimization process. The last part presents the possibilities of a data and load distribution through partitioning mechanisms, as well as aspects of SQL code optimization.
Inhaltsverzeichnis
Begriffs- und Abkürzungsverzeichnis
1. Einleitung
2. Grundlagen
2.1 Optimierungsmodell
2.2 Interne Verarbeitung von SQL-Anweisungen
2.3 Datenverwaltung durch den SQL Server
2.3.1 Datenbank
2.3.2 Lesen von Datenseiten
2.3.3 Schreiben von Datenseiten
2.4 Performanceüberwachung und Leistungsmessung
2.4.1 Ausführungszeit einer SQL-Anweisung messen
2.4.2 Statistische Größen mittels T-SQL "SET-Anweisungen" ermitteln
2.4.3 Grafische Ausführungspläne
2.4.4 Der Aktivitätsmonitor
2.4.5 Berichte
3. Systemumgebung
3.1 Arbeitsspeicher
3.2 Prozessor
3.3 Festplatten
3.3.1 Festplattenarten
3.3.2 RAID-Systeme
3.4 Netzwerk
3.5 Betriebssystem
3.6 Datenbankmanagementsystem
4. Indizes
4.1 Grundlagen von Indizes
4.2 Verwendung von Indizes
4.2.1 HEAP - Tabelle ohne gruppierten Index
4.2.2 Gruppierte Indizes (Clustered Index)
4.2.3 Nicht gruppierte Indizes (Nonclustered Index)
4.2.4 Eindeutige Indizes (Unique Indexes)
4.2.5 Gefilterte Indizes (Filtered Indexes)
4.2.6 Kombinierte Indizes (Combined Indexes)
4.2.7 Abdeckende Indizes (Covering Indexes)
4.3 Verwaltung von Indizes
4.3.1 Der Füllfaktor
4.3.2 Indizes reorganisieren
4.3.3 Indizes neu erstellen
4.3.4 Fehlende Indizes aufspüren
4.3.5 Überflüssige Indizes
5. Statistiken
5.1 Statistiken anzeigen
5.2 Statistiken anlegen
5.3 Statistiken aktualisieren
5.4 Gefilterte Statistiken
6. Partitionierung
6.1 Hardwareorientierte Partitionierung
6.2 Vertikale Partitionierung
6.3 Horizontale Partitionierung
7. Abfrageoptimierung
7.1 Aufbau einer Abfrage
7.2 Parametrisierung
7.2.1 Automatische Parametrisierung
7.2.2 Erzwungene Parametrisierung
7.2.3 Explizite Parametrisierung
7.2.4 Parametrisierung durch gespeicherte Prozeduren
7.2.5 Parametrisierungsproblematik
7.3 Hinweise
7.3.1 Abfragehinweise (Query Hints)
7.3.2 Tabellenhinweise (Table Hints)
7.3.3 Verknüpfungshinweise (JOIN Hints)
8. Fazit
9. Literaturverzeichnis
10.Abbildungsverzeichnis
11.Tabellenverzeichnis
12.Anhang
„Die Optimierung von Datenbanken bedeutet im Allgemeinen, von den vielfältigen Möglichkeiten der Konfiguration des Gesamtsystems Gebrauch zu machen, so dass das Datenbanksystem gemessen an den Anforderungen seiner Anwendungen optimal, d.h. den Erwartungen entsprechend reagiert. “(KNOLLE in Kudr07, S. 300)
Datenbanken sind das Kapital einer modernen Informationsgesellschaft und bilden die Grundlage fast jeder IT-Architektur. Durch stetig wachsende Datenmengen, die zunehmende Komplexität und Vernetzung von unterschiedlichen Anwendungen, sowie die Anforderungen an eine Hochverfügbarkeit, gewinnt auch die Performance-Optimierung verstärkt an Bedeutung.
Diese Arbeit zeigt unterschiedliche Möglichkeiten der Datenbank-Performance-Optimierung mit dem Microsoft SQL Server 2008 auf, die einerseits durch interne Funktionen und Automatismen, andererseits durch geeignete manuelle Maßnahmen vorgenommen werden können. Aufgrund der Komplexität, des enormen Umfangs der Thematik, sowie der zahlreichen Sonderfälle konzentriert sich diese Arbeit auf ausgewählte Ansatzpunkte einer Performance-Optimierung. Neben den Aspekten der eigentlichen Optimierungsmöglichkeiten bilden die Grundlagen und die Funktionsweise der einzelnen Themenbereiche einen wichtigen Teil dieser Arbeit, um ein übergreifendes Verständnis der Gesamtzusammenhänge zu erhalten. Insbesondere auf die Überwachung einzelner Komponenten und Parameter, sowie die Ursachenfindung bestehender Probleme wird speziell eingegangen.
Diese Arbeit gliedert sich im Wesentlichen in sechs Abschnitte:
Dieses Kapitel basiert im Wesentlichen auf: [Kali05a], [Pant07], [Pant10], [Schm07] und [Schm09].
Für eine erfolgreiche Performance-Optimierung ist ein systematisches Vorgehen unabdingbar. Nach Schmeling hat sich in der Praxis das inAbbildung 1gezeigte Modell zur PerformanceOptimierung als geeignet erwiesen, wobei die einzelnen Optimierungsphasen jeweils auf die Vorhergehenden aufbauen.
Abbildung 1: Optimierungsmodell (Quelle: Eigene Darstellung in Anlehnung an [Schm09])
Eine Performance-Optimierung erscheint oftmals erst im laufenden Produktivsystem erforderlich, da das Gesamtsystem plötzlich spürbar langsamer geworden ist. Dies ist jedoch der falsche Ansatz. Eine Optimierung sollte bereits auf dem speziell für eine Anwendung ausgelegten Datenbankdesign aufsetzen, um die Zugriffe auf die Datenbank zu minimieren. Der Fokus liegt dabei vor allem auf einer effizienten Datentypenwahl, ebenso wie dem sinnvollen Einsatz von Normalisierung und Denormalisierung in Bezug auf die anwendungsspezifische Nutzung.
Die zweite Phase, die Optimierung des eigentlichen SQL Codes, bietet in der Regel das größte Potential, um spürbaren Performancegewinn zu erzielen. Genaueste Kenntnisse über die Funktionsweise des SQL Servers, sowie die interne Verarbeitung eines SQL Befehls, sind dabei notwendig.
Im Anschluss an die SQL Code Optimierung empfiehlt sich eine Indexoptimierung, um die Datenbankstruktur durch entsprechende Indizes zu ergänzen und überflüssige zu eliminieren. Eine einmalige Erstellung reicht nicht aus, weshalb die vorhanden Indizes von Zeit zu Zeit reorganisiert oder komplett neu erstellt werden sollten.
Im vierten Optimierungsschritt gilt es, Blockierungen durch gesperrte Ressourcen aufzuspüren und zu minimieren. Gesperrte Ressourcen entstehen, indem mehrere Transaktionen versuchen gleichzeitig auf bestimmte Ressourcen zuzugreifen.
Für viele Systemadministratoren ist die Hardwareaufrüstung der erste Schritt um Performanceprobleme zu beheben. Dadurch werden jedoch meistens die eigentlichen Problemursachen nicht beseitigt, sondern nur eine kurzzeitige Performancesteigerung erreicht. Dementsprechend sollte eine Hardwareaufrüstung das letzte Mittel sein, um eine Performancesteigerung zu erreichen.
Dieses Kapitel basiert im Wesentlichen auf: [MaUn03], [Micr11], [Pant10], [Schm09], [Warn07] und[Wood07].
Die SQL Code Optimierung erfordert genaueste Kenntnisse des SQL Servers und der Verarbeitung von SQL-Anweisungen. Um die Funktionsweise des SQL Servers, insbesondere die Reihenfolge der Verarbeitung von SQL-Anweisungen zu verstehen, wird zunächst folgendes Beispiel betrachtet:
Beispiel 1: Einfache SQL Abfrage - Reihenfolge der Verarbeitung von SQL-Befehlen
Die obige Abfrage liefert eine Auflistung aller Unterkategorien, sowie die Anzahl der in ihr enthaltenen Produkte zurück. Dabei werden nur Kategorien beachtet, welche mindestens 75 Produkte und den String „kamera“ im Kategorienamen enthalten.
Der SQL Server verarbeitet die einzelnen Klauseln der Abfrage in einer exakt festgelegten, logischen Reihenfolge, welche Abbildung 2 verdeutlicht.
Abbildung 2: Reihenfolge der Verarbeitung von SQL-Befehlen
