Realdolmen Education

Details

Oracle SQL Performance Tuning

Deze cursus is momenteel niet ingepland op de open kalender, maar kan op aanvraag georganiseerd worden.

Cursus aanvragen

Aantal dagen

2 day(s)

Doelgroep

Analist-programmeurs, technisch ontwerpers, DBA's, functionele analisten.

Voorkennis

Een basiskennis van SQL en van de Oracle database structuur is vereist (cf. Cursus ORA010 - Writing SQL queries for Oracle DB).

Doel

Na deze cursus gevolgd te hebben, zal de deelnemer in staat zijn meer performante SQL en PL/SQL code te schrijven en de performantie van bestaande code te evalueren en te verbeteren.

Methode

Klassikale opleiding afgewisseld met oefeningen. Elke cursist beschikt voor het uitvoeren van de oefeningen over een eigen werkstation.

Beschrijving

Na een introductie van de belangrijkste oorzaken van performantieproblemen, en een overzicht van de eerste acties die genomen kunnen worden om de performantie te verbeteren, wordt er gefocust op indexen. Het begrijpen van de werking van indexen is een eerste stap in het schrijven van efficiënte SQL die gebruik maakt van de beschikbare indexen. In een volgende stap worden de in Oracle beschikbare tools (EXPLAIN, TRACE,...) om performantieproblemen te identificeren toegelicht, en worden de verschillende aspecten van het cost-based optimiseren uitgelegd

Aangezien vrij veel performantieproblemen opduiken bij het joinen van tabellen, worden de verschillende join-technieken in detail behandeld, en wordt er geëvalueerd welke technieken in diverse situaties verkozen moeten worden. Hier worden ook de optimizer-hints geïntroduceerd, teneinde de Oracle optimizer een specifieke join-techniek te laten gebruiken. Ook de mogelijkheden om welbepaalde uitvoerings- en toegangspaden op te leggen via optimizer-hints komen aan bod. Tenslotte, aangezien parallele uitvoering en caching een heilzame werking op de performantie kunnen hebben, worden ook de hints m.b.t. deze topics toegelicht

In een volgend deel van de opleiding focussen we op specifieke probleem SQL queries, en zoeken we naar een oplossing (via alternatieve coding of via een alternatieve database structuur) voor deze performantieproblemen.

Aangezien een aanzienlijk gedeelte van de Oracle coding in PL/SQL gebeurt, wordt er in deze opleiding ook aandacht besteed aan de mogelijkheden om de performantie te verbeteren op dit terrein. Tenslotte behandelen we een aantal geavanceerde technieken die kunnen helpen in het oplossen van performantieproblemen : parallel features, partitionering van tabellen, opslaan van execution plans,...

Tijdens diverse oefeningen komt het uittesten en analyseren van alternatieve SQL codering uitvoerig aan bod.

Inhoud

  • Inleiding tot performantie tuning
    • Oorzaken van performantieproblemen
    • Eerste oplossingen voor een betere performantie
    • Beperken van de users door gebruik van profielen
  • Basisprincipes van indexen
    • Basisconcepten
      • B-tree
      • Selectiviteit
      • Clustering factor
      • Aantal levels
      • Histogrammen
    • Terugvinden van informatie over indexen
    • Index types
      • Index-organized tabellen
      • Bitmap indexen
      • Op functies gabaseerde indexen
      • Hash indexen
      • Domain indexen
    • Heropbouwen van indexen
    • Verhinderen van het gebruik van indexen
  • Verschillende tabel types
    • Index-organized tabel
    • Hash clustered tabel
    • Nested tabel
    • Object tabel
    • Tijdelijke tabel
    • Externe tabel
  • Identificatie van performantieproblemen
    • Gebruik van de TRACE utility
    • Gebruik van TKPROF
    • Gebruik van EXPLAIN
    • Kolommen in de PLAN_TABLE
    • Het AUTOTRACE commando
    • Terugvinden van queries die veel geheugen gebruiken en/of disk reads veroorzaken
    • Terugvinden van de queries die getuned dienen te worden
    • Nuttige packages door Oracle ter beschikking gesteld
  • Het SQL optimisatie-proces
    • Werking van de Cost-based optimisatie
    • Cost berekening in detail
    • Beheer van statistieken
  • Tabel Join methoden
    • NESTED LOOPS join
    • SORT_MERGE join
    • CLUSTER joins
    • HASH joins
    • INDEX joins
    • De join volgorde
  • Het gebruik van hints in SQL statements
    • Execution path hints
    • Access method hints
    • Join order hints
    • Join operation hints
    • Parallel execution hints
    • Cache hints
  • Query tuning
    • De SQL Tuning Advisor
    • De SQL Access Advisor
    • Wanneer moeten indexen worden gebruikt ?
    • Wat gebeurt er wanneer de indexen niet worden gebruikt ?
    • Wat gebeurt er indien foute indexen worden gecreëerd ?
    • Wees voorzichtig bij het droppen van indexen
    • Indexering van het SELECT en WHERE statement
    • Het 'Fast Full Scan' toegangspad
    • Gebruik van geconcateneerde indexen
    • Cachen van tabellen in het geheugen
    • Gebruik van meerdere indexen
    • Onderdrukken van het gebruik van indexen
    • Het OR-statement
    • Ongelijkheden in predicaten
    • De EXISTS-functie
    • Het index-breakpoint
    • De IN-operator
    • Gedistribueerde queries
  • Performantieverbetering via PL/SQL
    • Hergebruik van geheugen met PL/SQL
    • Gebruik van Bind-variabelen
    • Terugvinden van herbruikbare PL/SQL code
    • Cachen van PL/SQL object statements in het geheugen
    • De DBMS_PROFILER package
    • De DBMS_TRANSACTION package
  • Geavanceerde technieken voor performantie-optimalisatie
    • Gebruik van parallele features
    • Gebruik van gepartitioneerde tabellen en indexen
    • Plan stability : outlines