: Robert Panther
: SQL Server Performanceprobleme analysieren und beheben
: entwickler.press
: 9783868026863
: 1
: CHF 8.90
:
: Anwendungs-Software
: German
: 133
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF/ePUB
Date banken bilden das Rückgrat nahezu jeder Businessanwendung. Dabei spielt oft die Performance eine entscheidende Rolle. Solange diese akzeptabel ist, wird das Thema gerne unterbewertet. Wenn sich jedoch die Beschwerden von Anwendern häufen, dass lange Wartezeiten oder gar Time-outs entstehen, wird das Thema Performance schnell kritisch, sodass schnelles und gleichzeitig gut durchdachtes Handeln erforderlich wird. Dieses Buch stellt für alle Versionen bis einschließlich SQL Server 2016 in kompakter Form dar, was zu prüfen ist, und wo mit möglichst geringem Aufwand schnell eine Verbesserung der Performance erzielt werden kann. In separaten Abschnitten des Textes wird ebenso darauf eingegangen, wie eine ausführliche Performanceanalyse aussehen und welche langfristigen Wartungsmaßnahmen man ergreifen kann, um die Datenbankperformance auch dauerhaft auf einem guten Level zu halten.

Robert Panther ist hauptberuflich als Executive Consultant für CGI in Deutschland tätig. Daneben schreibt er Fachartikel und Bücher zu verschiedenen Themen rund um sein Spezialgebiet SQL Server und ist regelmäßig als Speaker bei IT-Konferenzen zu sehen sowie in der Professional Association for SQL Server (PASS) aktiv. Seine Themenschwerpunkte sind insbesondere Performancetuning, die SQL Server Integration Services sowie SQL Server Express.

3 Ausführliche Performanceanalyse

Wenn das dringende Performanceproblem beseitigt oder zumindest eine schnelle Lösung gefunden wurde, damit Server und Datenbanken kurzfristig wieder nutzbar sind, ist es an der Zeit, sich einer ausführlichen Analyse zuzuwenden. Das Hauptziel dabei liegt darin, die eigentlichen Ursachen der Performanceprobleme zu erkennen (und idealerweise auch zu beheben).

3.1 Vorgehensweise

Um bei der medizinischen Analogie zu bleiben, befindet sich der Patient (der SQL Server) jetzt nicht mehr im kritischen Zustand, sodass man sich die Zeit für eine gründliche und ausführliche Analyse nehmen kann. Dadurch erhält man auch die Möglichkeit, nicht nur die akuten Symptome eines Problems zu behandeln, sondern auch den Problemursachen auf den Grund zu gehen, um diese im Idealfall zu beseitigen.

Dabei müssen Sie sich nicht an die Reihenfolge der in diesem Kapitel beschriebenen Analysemaßnahmen halten. Im besten Fall hat die schnelle Erstanalyse des akuten Problems bereits einige mögliche Problembereiche aufgedeckt, die Sie nun genauer unter die Lupe nehmen können. Aber auch wenn dies nicht der Fall ist, können Sie die im Folgenden beschriebenen Abschnitte des Kapitels in beliebiger Folge abarbeiten.

3.2 Prüfung von Server und Betriebssystem

Damit eine Serveranwendung wie der SQL Server performant laufen kann, muss die richtige Hardware nicht nur vorhanden, sondern auch entsprechend konfiguriert sein. Dasselbe gilt für das Betriebssystem, das quasi als Schnittstelle zwischen Hardware und SQL Server fungiert und letzterem die benötigten Ressourcen zur Verfügung stellt.

Prozessor

Seit einigen Jahren steigen die Taktraten von neueren Prozessorgenerationen nicht mehr gravierend, sondern haben sich bei Werten zwischen 2 und 3 GHz eingependelt. Stattdessen setzt man mittlerweile neben besserem Caching-Verhalten (durch einen größeren prozessorinternen Cache) auf mehr Parallelität durch die Verwendung von mehr CPUs, aber auch mehr Kernen pro CPU.

Dies muss jedoch von dem verwendeten Betriebssystem sowie der genutzten Edition von SQL Server auch unterstützt werden. Windows 2008 R2 Standard unterstützt beispielsweise maximal vier CPUs, während die Enterprise Edition acht CPUs nutzen kann – jeweils unabhängig von der Anzahl der Cores pro CPU. Bei SQL Server kann die Express Edition nur eine CPU nutzen, die Standard Edition schon vier und erst die Enterprise Edition hat hier keine eigene Obergrenze, sondern wird nur durch das darunterliegende Betriebssystem begrenzt. Wenn Sie also eine zu kleine Edition von Windows oder SQL Server nutzen, laufen Sie Gefahr, in teure CPUs investiert zu haben, die nicht alle verwendet werden.

Hauptspeicher

Dies ist der Bereich, in dem sich durch Hardwareaufrüstung am ehesten etwas erreichen lässt. Dies setzt allerdings voraus, dass sowohl vom Betriebssystem als auch von SQL Server eine Edition verwendet wird, die diesen auch nutzen kann.

Generell sollte man heutzutage im Serverumfeld ausschließlich die 64-Bit-Varianten nutzen, da die 32-Bit-Varianten lediglich 4 GB adressieren können.

Auch die Editionen von SQL Server haben definierte Obergrenzen für den nutzbaren Hauptspeicher. So kann die Express Edition maximal 1 GB verwenden, die Standard Edition mindestens 64 GB (bei SQL Server 2008 unbegrenzt), und spätestens die Enterprise Edition kann den gesamten vom Betriebssystem bereitgestellten Speicher nutzen.

Stellen Sie daher sicher, dass die verwendete Version und Edition des Betriebssystems den gesamten vorhandenen Speicher auch verwenden kann.

Festplatten

Zugriffe auf physikalische Datenträger wie Festplatten sind vergleichsweise langsam. Daher versucht SQL Server, diese nach Möglichkeit durch intelligentes Caching zu minimieren. Muss aber dennoch auf den Datenträger selbst zugegriffen werden, gibt es ein paar hilfreiche Tricks, mit denen die Zugriffe möglichst performant ausgeführt werden können.

Prüfen Sie, ob die folgenden Dateien auf verschiedene Platten(-systeme) verteilt sind, um einen parallelen Zugriff zu ermöglichen:

  • System (Betriebssystem und SQL Server)
  • Windows-Auslagerungsdatei
  • Datenbankdateien
  • Protokolldateien
  • TempDB (Datenbank und Protokoll)
  • Filestream-Freigabe (sofern verwendet)
  • Back-up-Dateien

Wenn weniger Platten zur Verfügung stehen, sollten zumindest die Dateien, die häufig gleichzeitig verwendet werden, auf diesen verteilt werden: System, Datenbank, Protokoll und TempDB.

Mit frei erhältlichen Tools wie beispielsweise SQLIO lassen sich die Zugriffszeiten der verschiedenen Plattensysteme testen. Prüfen Sie alle verfügbaren Systeme, um die Dateien dann so zu verteilen, dass insbesondere Protokoll und TempDB auf möglichst schnellen Datenträgern liegen, während für Back-ups die langsamsten Datenträger genutzt werden können.

Alle Datenträger nutzen eine fest definierte Blockgröße, die bei Dateisystemen wie NTFS beim Formatieren festgelegt werden kann. Da SQL Server Daten in 64-KB-Blöcken liest und schreibt, stellt dies auch die optimale Blockgröße für die Datenträger dar, auf denen Datenbank- und Protokolldateien liegen.

Netzwerk

Prüfen Sie, ob die im Server verwendeten Netzwerkkarten mit der maximal möglichen Geschwindigkeit und im Vollduplex-Modus laufen. Hierzu finden Sie im Betriebssystem unter den Eigenschaften derNetzwerkverbindung einen Punkt zur Konfiguration der Netzwerkkarte. Bei den meisten Netzwerkkartentreibern finden Sie hier unter den erweiterten Eigenschaften eine Einstellung fürVerbindungsgeschwindigkeit undDuplex-Modus. Sollte hier ein zu niedriger Wert oder auch Halbduplex-Modus eingestellt s

Inhaltsverzeichnis6
Vorwort8
1 Einleitung12
1.1 Warum dieses Buch?12
1.2 Für wen ist dieses Buch gedacht?15
2 Erste Hilfe bei Perfor-manceproblemen16
2.1 Vorgehensweise16
2.2 Prüfung des allgemeinen Systemzustands19
2.3 Prüfung des SQL Servers26
2.4 Kurzfristige Hilfsmaßnahmen36
3 Ausführliche Performanceanalyse42
3.1 Vorgehensweise42
3.2 Prüfung von Server und Betriebssystem43
3.3 Prüfung der Konfiguration des SQL Servers50
3.4 Aktivität des SQL Servers im Detail72
3.5 Indexanalyse76
3.6 Finden langlaufender Abfragen83
3.7 Analyse von Deadlocks85
4 Langfristige Maßnahmen90
4.1 Vorgehensweise90
4.2 Behebung bereits festgestellter Probleme91
4.3 Einrichtung regelmäßiger Wartungsaufgaben93
4.4 Ressourcenkontrolle96
4.5 Monitoring zur Früherkennung von Problemen101
5 Tools und Features110
5.1 Windows Task-Manager110
5.2 Leistungsüberwachung111
5.3 SQL Server Management Studio112
5.4 SQL Server Aktivitätsmonitor112
5.5 Dynamische Verwaltungssichten112
5.6 SQL Server Profiler115
5.7 SQL Server Extended Events116
5.8 Datenbankoptimierungsratgeber117
5.9 Verwaltungs-Data-Warehouse117
5.10 Abfragespeicher118
5.11 Liveabfragestatistik118
5.12 Ressourcenkontrolle118
Anhang120
Über den Autor126
Stichwortverzeichnis128