Optimalisatie van Firebird-query's
Optimalisatie van Firebird-queries behandelt hoe SELECT-instructies worden uitgevoerd: plannen, statistieken, toegangsmethoden, afstemmingspatronen en hoe u langzame queries kunt opsporen met MON$ en de Trace API.
Syllabus
-
Prestaties van SELECT-queries - hoe een query wordt uitgevoerd
- Client-serverbenadering
- Prepare, plangeneratie, uitvoering, fetches, buffering
-
Uitvoeringsstatistieken
- Reads, writes, fetches, tijd
- Databasecache, schijf, CPU
- Hoe garbage de uitvoering beïnvloedt
- Cachehits (Classic vs SuperServer)
-
Toegangsmethoden / datapaden
- NATURAL-scan
- INDEX-zoekopdracht: B-bomen, recordpointers, richting, voorbeelden
- Geforceerd indexgebruik, bitmerge van indices
- Tabelcardinaliteit en indexselectiviteit
- Indices uitschakelen in WHERE
- Index ORDER vs SORT (
firebird.conf-instellingen) - Indices uitschakelen in ORDER BY / GROUP BY
- Plannen in opgeslagen procedures en views
-
Query-afstemming
- Hoe u een PLAN leest
- Optimizer-aanpassingen
WHERE FIELD IN (…)- LIKE, CONTAINING, STARTING WITH
- JOIN: impliciet vs expliciet, slechte 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)
-
Langzame queries opsporen met MON$ en Trace API
- Wat MON$ en Trace zijn
- MON$-velden die ertoe doen
- Trace API-parameters en uitvoer
- Tools (inclusief HQbird-monitoring)