SQL Server: Performanceprobleme analysieren und beheben
()
About this ebook
Read more from Robert Panther
Datenbankentwicklung lernen mit SQL Server 2017: Der praxisorientierte Grundkurs Rating: 0 out of 5 stars0 ratingsDatenbankentwicklung lernen mit SQL Server 2022: Der praxisorientierte Grundkurs – auch für SQL Server Express Rating: 0 out of 5 stars0 ratingsDatenbankentwicklung lernen mit SQL Server 2016: Der praxisorientierte Grundkurs Rating: 0 out of 5 stars0 ratings
Related to SQL Server
Titles in the series (20)
JavaScript für Java-Entwickler Rating: 0 out of 5 stars0 ratingsCSS3: Die Referenz für Webentwickler Rating: 0 out of 5 stars0 ratingsAbofallen im Netz: Wie Sie teure Klicks vermeiden Rating: 0 out of 5 stars0 ratingsZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Rating: 0 out of 5 stars0 ratingsIhr Recht bei Onlineauktionen. Juristische Tipps für eBay und Co. Rating: 0 out of 5 stars0 ratingsSQL-Abfragen optimieren: Was Entwickler über Performance wissen müssen Rating: 0 out of 5 stars0 ratingsAgile Softwareentwicklung: Ein Leitfaden für Manager Rating: 0 out of 5 stars0 ratingsNeo4j 2.0: Eine Graphdatenbank für alle Rating: 0 out of 5 stars0 ratingsCloud Computing: Rechtliche Grundlagen Rating: 0 out of 5 stars0 ratingsJavaScript und TypeScript für C#-Entwickler Rating: 0 out of 5 stars0 ratingsSecurity im E-Commerce: Absicherung von Shopsystemen wie Magento, Shopware und OXID Rating: 0 out of 5 stars0 ratingsIhr Recht als Blogger: Juristische Tipps für Blogs, Podcasts und Co. Rating: 0 out of 5 stars0 ratingsJavaScript für Java-Entwickler Rating: 0 out of 5 stars0 ratingsDynamic Proxies: Effizient programmieren Rating: 0 out of 5 stars0 ratingsVorsicht Suchmaschine: Rechtliche Tipps für Google und Co. Rating: 0 out of 5 stars0 ratingsJavaScript für Java-Entwickler Rating: 0 out of 5 stars0 ratingsIhr Recht als Programmierer: Juristische Tipps für Angestellte, Selbstständige und Freelancer Rating: 0 out of 5 stars0 ratingsCrime Scene Internet: Ein Streifzug durch das Computer- und Internetstrafrecht Rating: 0 out of 5 stars0 ratingsZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Rating: 0 out of 5 stars0 ratingsSQL Server: Performanceprobleme analysieren und beheben Rating: 0 out of 5 stars0 ratings
Related ebooks
SQL-Abfragen optimieren: Was Entwickler über Performance wissen müssen Rating: 0 out of 5 stars0 ratingsAgile Softwareentwicklung: Ein Leitfaden für Manager Rating: 0 out of 5 stars0 ratingsWeb-Applikationen entwickeln mit NoSQL: Das Buch für Datenbank-Einsteiger und Profis! Rating: 0 out of 5 stars0 ratingsLogging: Schnelleinstieg Rating: 0 out of 5 stars0 ratingsBigData mit JavaScript visualisieren: D3.js für die Darstellung großer Datenmengen einsetzen Rating: 0 out of 5 stars0 ratingsSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratingsScrum: Schnelleinstieg Rating: 0 out of 5 stars0 ratingsScrum. Schnelleinstieg (3. Aufl.) Rating: 0 out of 5 stars0 ratingsAgiles Projektmanagement: Scrum für Einsteiger Rating: 0 out of 5 stars0 ratingsScrum: Agiles Projektmanagement und Scrum erfolgreich anwenden Rating: 0 out of 5 stars0 ratingsModerne Datenzugriffslösungen mit Entity Framework 6 Rating: 0 out of 5 stars0 ratingsDas ERP als Erfolgsfaktor für Unternehmen: Grundlagen, innerbetriebliche Funktionen, E-Business, Auswahlmethode Rating: 0 out of 5 stars0 ratingsBig Data: Executive Briefing Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsWindows-8-Apps für C#-Entwickler: Design-Guidelines, Anleitungen, Best Practices Rating: 0 out of 5 stars0 ratingsPowerShell – kurz & gut: Für PowerShell 7 und Windows PowerShell 5 Rating: 0 out of 5 stars0 ratingsDatenbank-Tuning - Slow Queries und MySQL-Performance: Slow Queries und MySQL-Performance Rating: 0 out of 5 stars0 ratingsBPM in der Praxis Rating: 0 out of 5 stars0 ratingsModellbasiertes Requirements Engineering: Von der Anforderung zum ausführbaren Testfall Rating: 0 out of 5 stars0 ratingsBessere Softwareentwicklung mit DevOps Rating: 0 out of 5 stars0 ratingsAgiliät und Continuous Delivery Rating: 0 out of 5 stars0 ratingsBootstrap kurz & gut Rating: 0 out of 5 stars0 ratingsSo findest du den Einstieg in WordPress: Die technischen Grundlagen zu Installation, Konfiguration, Optimierung, Sicherheit, SEO Rating: 0 out of 5 stars0 ratingsMein Business, mein Büro, mein Mac: Mac für Unternehmer und Freiberufler Rating: 0 out of 5 stars0 ratingsPHP 7 und MySQL: Ihr praktischer Einstieg in die Programmierung dynamischer Websites Rating: 0 out of 5 stars0 ratingsKurzanleitung Project Libre Rating: 0 out of 5 stars0 ratings
Programming For You
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsC von Kopf bis Fuß Rating: 3 out of 5 stars3/5JavaScript kurz & gut Rating: 3 out of 5 stars3/5Python kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5Microcontroller für das IoT Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsProgrammieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Git kurz & gut Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5SQL von Kopf bis Fuß Rating: 4 out of 5 stars4/5Raspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsLinux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Rating: 0 out of 5 stars0 ratingsMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsC++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratingsDas Franzis Starterpaket Arduino Uno: Das Handbuch für den Schnelleinstieg Rating: 0 out of 5 stars0 ratingsAndroid-Programmierung kurz & gut Rating: 0 out of 5 stars0 ratingsSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratingsProgrammieren von Kopf bis Fuß Rating: 4 out of 5 stars4/5PowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Einstieg in TypeScript: Grundlagen für Entwickler Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsJava 8 - Die Neuerungen: Lambdas, Streams, Date and Time API und JavaFX 8 im Überblick Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5HTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsPowerprojekte mit Arduino und C: Schluss mit dem frustrierenden Ausprobieren von Code-Schnipseln! Rating: 0 out of 5 stars0 ratings
Reviews for SQL Server
0 ratings0 reviews
Book preview
SQL Server - Robert Panther
2016
1 Einleitung
1.1 Warum dieses Buch?
Jeder Datenbankadministrator (oder Berater in diesem Umfeld) hat sicherlich schon einmal die Situation erlebt, dass bei einer Anwendung, die bereits längere Zeit problemlos lief, sich die Anwender plötzlich beschweren, dass die Performance unerträglich schlecht und ein normales Arbeiten kaum noch möglich ist. Entweder dauern einzelne Aktionen deutlich zu lange, oder Anwender erhalten eventuell auch Time-out-Meldungen, die belegen, dass eine Aktion zu diesem Zeitpunkt gar nicht ausgeführt werden konnte, weil sie zu lange gedauert hat.
Wenn es schlecht läuft, haben die Klagen der Anwender über die schlechte Performance schon Teile des Managements erreicht; im ungünstigsten Fall waren diese davon sogar unmittelbar selbst betroffen.
Nun gilt es, gleichzeitig schnell zu reagieren, dabei aber dennoch wohlüberlegt zu handeln, denn ein Schnellschuss kann das Eingrenzen des wesentlichen Problems erschweren und im Extremfall sogar zu einer Verschlechterung der Performance führen. Die möglichen Ursachen des Problems können sehr vielseitig sein:
Hardware zu schwach
fehlende Indizes
zu viele Indizes
veraltete Statistiken
schlecht formulierte Abfragen
Sperren und Deadlocks
lang dauernde Abfragen (oder Änderungen) etc.
Daraus ergeben sich auch mindestens genauso viele Lösungsansätze:
Hardware erweitern
fehlende Indizes erstellen
überflüssige Indizes löschen
Dateien auf verschiedene Platten (bzw. Plattensysteme) verteilen
Dateien vergrößern
Wiederherstellungsmodus anpassen
SQL-Abfragen optimieren
richtige Transaktionslevel verwenden
kleinere Transaktionen nutzen etc.
Um schnell Abhilfe zu schaffen, ergibt es natürlich wenig Sinn, alle möglichen Lösungsansätze der Reihe nach durchzugehen. Dies würde einen erheblichen Aufwand verursachen, ohne dass eine Garantie auf Besserung des Problems gegeben wäre. Dazu erfordern einige Ansätze einen Neustart des Serverdienstes (und damit zusätzliche Ausfallzeiten) oder gar Änderungen an der Anwendung selbst. Dabei sollte es das primäre Ziel sein, quasi minimalinvasiv zu agieren, also mit möglichst geringen Änderungen eine möglichst deutliche Verbesserung der Performance zu erreichen. Erst wenn die akuten Probleme beseitigt sind, kann anschließend eine ausführliche Analyse erfolgen, um auch kleinere oder noch nicht akute Probleme zu beseitigen. Insgesamt hat sich ein dreistufiges Vorgehen bewährt:
Erste Hilfe bei Performanceproblemen
Ausführliche Performanceanalyse
Langfristige Maßnahmen
An diesem dreistufigen Vorgehen orientiert sich auch der Aufbau des Buchtexts (Kapitel 2–4), denen ein Kapitel folgt, in dem die wichtigsten mit SQL Server ausgelieferten Tools zur Performanceanalyse kurz dargestellt sind.
Dabei ist insbesondere der erste Teil – wie das Buch insgesamt auch – sehr kompakt gehalten, damit man bei akuten Performanceproblemen nicht lange lesen muss, um eine schnelle Besserung zu erzielen. Aus demselben Grund werden Sie im Buch auch keine langen Listings finden. Wenn Sie ein akutes Performanceproblem bei einer Datenbank haben, möchten Sie sicherlich keine Zeit damit verschwenden, lange SQL-Skripte abzutippen. Stattdessen wird in den meisten Fällen beschrieben, wie Sie Performanceanalysen über die Benutzeroberfläche der diversen Tools durchführen können.¹
Halten Sie dieses Buch also am besten immer in greifbarer Nähe (in der Schreibtischschublade oder unter der Tastatur), sodass Sie es im Ernstfall schnell zur Hand haben.
1.2 Für wen ist dieses Buch gedacht?
Der Text richtet sich primär an Datenbankadministratoren und Berater, die in diesem Umfeld tätig sind. Da die Übergänge zwischen den Tätigkeitsfeldern meist fließend sind, können die Inhalte auch für Anwendungs- und Datenbankentwickler eine wertvolle Hilfe sein.
An Vorkenntnissen werden vor allem Grundkenntnisse mit SQL Server vorausgesetzt, insbesondere T-SQL und der Umgang mit dem SQL Server Management Studio sollten bekannt sein.
1 Im Laufe der Zeit werden Sie diese Aufgaben sicherlich vermehrt über SQL-Skripte durchführen. Wenn Sie aber wissen, welche Daten Sie analysieren müssen, sind im Internet dazu zahlreiche Skriptvarianten zu finden. Über kurz oder lang stellen sich die meisten erfahrenen Datenbankadministratoren eine eigene individuelle Skriptbibliothek zusammen, mit der die Analysen dann auch schnell per SQL-Skript durchgeführt werden können.
2 Erste Hilfe bei Performanceproblemen
2.1 Vorgehensweise
Das Vorgehen zur schnellen Abhilfe von akuten Performanceproblemen ist mit den Sofortmaßnahmen am Unfallort nach einem Verkehrsunfall vergleichbar. Dabei ist der wichtigste Punkt, den man immer im Kopf behalten muss, nicht in Panik oder gar blinden Aktionismus zu verfallen. Auch wenn die Lösung offensichtlich erscheint und der Druck durch die sich beklagenden Anwender (oder schlimmer noch Manager) hoch sein mag, gilt es zwar zügig, aber dennoch nicht übereilt zu handeln. Denn auf der einen Seite kann ein unüberlegter Schnellschuss das akute Problem im Extremfall sogar verschlimmern oder andere Probleme nach sich ziehen. In jedem Fall wird jedoch eine spätere Analyse der Problemursachen erschwert oder sogar gänzlich verhindert, wodurch nicht auszuschließen ist, dass dieselben Probleme bald wieder auftreten.
Blenden Sie Überflüssiges aus. Es geht nicht darum, den Patienten (die Datenbank) von allen großen und kleinen „Wehwehchen" zu befreien oder gar den SQL Server (das Auto) wieder komplett zu reparieren. Stattdessen muss der Fokus darauf liegen, mit minimalinvasiven Eingriffen den laufenden Betrieb wieder zu ermöglichen und dafür zu sorgen, dass die Datenbank ansprechbar bleibt. Dies geschieht in drei Schritten:
Anwenderbefragung
Prüfung des Systemzustands
Ergreifen geeigneter Maßnahmen
Best Practices
Wenn Sie mit mehreren Personen parallel arbeiten können, teilen Sie die Aufgaben auf, um noch weniger Zeit zu verlieren. Während eine Person die Anwender befragt, kann ein Zweiter schon den allgemeinen Zustand des Datenbankservers prüfen. Im Idealfall kann ein Dritter währenddessen das Management beruhigen und damit den anderen beiden den Rücken freihalten. Denn es erschwert die Konzentration auf die Fehlersuche erheblich, wenn man sich gleichzeitig rechtfertigen muss, wo das Problem liegen könnte, und Prognosen abgeben soll, wie lange die Behebung denn dauert.
Befragung der Anwender
Beginnen Sie mit einer kurzen Anamnese, indem Sie dem Mitarbeiter, der das Problem gemeldet hat, ein paar einfache, aber wichtige Fragen stellen:
Wann tritt das Problem auf?
dauerhaft
gelegentlich
zu einer bestimmten Uhrzeit
Wo tritt das Problem auf?
überall
in bestimmten Bereichen der Anwendung
nach Aufruf einer bestimmten Funktionalität in der Anwendung
beim Schreiben oder Lesen von Daten
Bei wem tritt das Problem auf?
einzelner Anwender
bestimmte Gruppe von Anwendern
alle Anwender
Ist das Problem reproduzierbar? (idealerweise auch auf einer Test- oder Pre-Live-Umgebung)
Gibt es irgendwelche gravierenden äußeren Einflüsse, die als Ursache in Frage kommen?
Änderungen an Hardware (z. B. neuer Server oder Storage)
Änderungen an Software (z. B. neue Anwendungsversion)
Mit den Antworten auf diese Fragen lässt sich das Problem meist schon etwas eingrenzen.
Im Idealfall sind die Symptome reproduzierbar, sodass immer, wenn eine bestimmte Aktion ausgeführt wird, diese extrem lange dauert. Damit ist dann meist auch bekannt, welche Abfragen und dahinterliegenden Tabellen genauer analysiert werden sollten.
Aber auch wenn das