Performance Optimierung von Datenbanken Strategien und Prinzipien für den SQL Server Dr. Ilona Baldus, ERGON Datenprojekte GmbH Agenda o Ursachen und Suche nach Performance Engpässen o SQL Abfragen o Ausführungsplan o Aktivitätsmonitor und Systemsichten (Flaschenhälse und Locks) o Microsoft Profiler o Azure als Lösungsansatz Warum ist eine gute Performance wichtig? o Gute Performance spart Geld und Nerven o Kollegen / Kunden warten auf die Ergebnisse o Ressourcen o „viele Wege führen nach Rom“ Warum ist mein Bericht noch nicht fertig? Warum ist mein Bericht noch nicht fertig? Quelle: http://de.wikipedia.org/wiki/Relationale_Datenbank Warum ist mein Bericht noch nicht fertig? Warum ist mein Bericht noch nicht fertig? SQL o Schlechte Abfrage? Hardware kann nichts retten o „einfaches“ Mittel o Vorausschauend: Datenmenge, Mitarbeiter, Software o Kostengünstig o Erster Überblick SQL optimieren Use AdventureWorks2012 SELECT * FROM Sales.SalesOrderDetail SELECT CarrierTrackingNumber , OrderQty , UnitPrice FROM Sales.SalesOrderDetail schlecht gruppiert? SELECT SUM(QTY), Artikeltext FROM Tabelle GROUP BY Artikeltext („ML Road Seat Assembly “, „HL Road Seat Assembly“, etc.) Besser: SELECT SUM(QTY), Artikel_id FROM Tabelle GROUP BY Artikel_id (518, 519, etc.) schlecht sortiert? SELECT qty FROM Tabelle ORDER BY Datum, Id1, Id2 Besser: SELECT qty FROM Tabelle ORDER BY Orderkey z.B. Datum-Id1-Id2 Wann wird gefiltert? Richtig verbinden Select PersId, Alter, Geburtsort From iPhone_user UNION Schnittmenge nur 1x Select PersId, Alter, Geburtsort From Android_user Select PersId, Alter, Smartphone From geb_Hamburger UNION ALL Select PersId, Alter, Smartphone From geb_Pinneberger Keine Schnittmenge SQL optimieren o Nur Daten abfragen, die interessieren o Unterabfragen vermeiden o Prüfe o Filter o Gruppierung o Sortierung Ausführungsplan Massen Updates o 80 Mio Zeilen benötigen Update auf Spalte A Spalte A in 5 Indizes o Ausführungsplan zeigt: 5 x 80 Mio Updates der Indizes o Vorgehen: o Deactivate Index o Update Data o Rebuild Index Quelle: http://pixabay.com/ Ausführungsplan o Warnungen, z.B. fehlender Index o Reihenfolge der Einzelschritte o Erst filtern, dann join? o Sind die Statistiken aktuell? o SQL ggf. anpassen Aktivitätsmonitor: Wo staut es? Aktivitätsmonitor: Wo staut es? Aktivitätsmonitor Jedes Element könnte der Flaschenhals sein Lösungsvorschläge normal komprimiert Lösungsvorschläge Aktivitätsmonitor o Überblick: wo entsteht der Stau? o blockierende / blockierte Transaktionen o Alle Nutzer, alle Abfragen o mögliche Flaschenhälse (Hardware) o Schreib- und Lesevorgänge der Festplatten o Greift meine Abfrage über partitionierte Tabellen auf die richtige Partition zu? o Ist meine Abfrage korrekt? o Infos aus Systemsichten Auswege o Skalierbar (Software, Hardware) o „Hardware“ an Performance anpassen o Ressourcen werden nach Nutzung gezahlt o Z.B. Updates über Nacht o Replica o hohe Datenverfügbarkeit o Umgehen von Locks Profiler Zusammenfassung Vielen Dank für Ihre Aufmerksamkeit Fragen?