Оптимизация запросов Firebird
Optimierung von Firebird-Abfragen behandelt, wie SELECT-Anweisungen ausgeführt werden: Pläne, Statistiken, Zugriffsmethoden, Tuning-Muster und wie man langsame Abfragen mit MON$ und der Trace-API erkennt.
Lehrplan
-
Leistung von SELECT-Abfragen - wie eine Abfrage ausgeführt wird
- Client-Server-Ansatz
- Vorbereitung, Planerstellung, Ausführung, Fetches, Pufferung
-
Ausführungsstatistiken
- Reads, Writes, Fetches, Zeit
- Datenbank-Cache, Festplatte, CPU
- Wie Garbage die Ausführung beeinflusst
- Cache-Treffer (Classic vs. SuperServer)
-
Zugriffsmethoden / Datenpfade
- NATURAL-Scan
- INDEX-Suche: B-Bäume, Datensatzzeiger, Richtung, Beispiele
- Erzwungene Indexnutzung, Bit-Merge von Indizes
- Tabellenkardinalität und Index-Selektivität
- Indizes in WHERE deaktivieren
- Index ORDER vs. SORT (
firebird.conf-Einstellungen) - Indizes in ORDER BY / GROUP BY deaktivieren
- Pläne in gespeicherten Prozeduren und Views
-
Abfrage-Tuning
- Wie man einen PLAN liest
- Optimizer-Anpassungen
WHERE FIELD IN (…)- LIKE, CONTAINING, STARTING WITH
- JOIN: implizit vs. explizit, schlechte Joins, LEFT/RIGHT, Self-Joins
- UPDATE + SELECT
- MAX, MIN, COUNT, AVG, SUM
- IN vs. EXISTS vs. MERGE
WHERE (X AND Y) OR (K AND N)
-
Verfolgung langsamer Abfragen mit MON$ und der Trace-API
- Was MON$ und Trace sind
- MON$-Felder, die wichtig sind
- Trace-API-Parameter und Ausgabe
- Werkzeuge (einschließlich HQbird-Überwachung)