Performance Optimierung von Datenbanken

Werbung
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?
Herunterladen