Course Code: ora_sp3
Duration: 28 hours
Prerequisites:

Swobodne posługiwanie się językiem SQL i PL/SQL. Doświadczenie praktyczne w pracy z Oracle lub innym silnikiem relacyjnej bazy danych.

Overview:

Poziom: Ekspert. Forma: Wykład, Prezentacja, Dyskusja, Rozwiązywanie problemów. Przeznaczenie szkolenia: Szkolenie to jest przeznaczone dla doświadczonych programistów i administratorów bazy danych, którzy spotykają się na co dzień z problemami wydajnościowymi zarówno w określonych poleceniach SQL jak i całych procesach zaimplementowanych po stronie bazy danych Oracle. Korzyści wynikające z ukończenia szkolenia: Szkolenie w przejrzysty i szeroki sposób prezentuje zagadnienia pozwalające na zrozumienie wewnętrznych mechanizmów zachodzących podczas wykonywania poleceń SQL i programów PL/SQL, na monitorowanie i diagnozowanie problemów wydajnościowych oraz implementowanie rozwiązań. Umożliwia efektywne zarządzanie procesem optymalizacji poleceń SQL i programów PL/SQL.

Course Outline:

Metodologia strojenia aplikacji

  • Odnalezienie problemu
  • Diagnozowanie przyczyny
  • Aplikowanie rozwiązania

Architektura bazy danych i instancji

  • Podstawowe informacje o plikach i procesach serwera
  • Struktury pamięci (SGA, PGA)
  • Proces parsowania i współdzielenia kursorów

Analiza planu wykonania polecenia

  • Sposoby pozyskiwania hipotetycznego i rzeczywistego planu zapytania (EXPLAIN PLAN, DBMS_XPLAN, SQLPlus Autotrace)
  • Oznaczanie kolejności kroków algorytmu
  • Interpretacja zawartości drzewa planu
  • Plany adaptywne

Proces optymalizacji kosztowej i sterowanie praca optymalizatora kosztowego

  • Właściwości optymalizacji kosztowej i regułowej
  • Parametry sesji i instancji
  • Podpowiedzi (hinty)
  • Wzorce planów zapytań (outlines)
  • Zarządzanie planami zapytań (baselines, Profile, SQL Patch)

Statystyki i histogramy

  • Wpływ statystyk i histogramów na wydajność
  • Sposoby zbierania statystyk i histogramów
  • Strategie zliczania i estymacji statystyk, próbkowanie ad hoc
  • Zarządzanie statystykami: blokowanie, kopiowanie, edycja, automatyzacja zbierania, monitorowanie zmian
  • Statystyki wielokolumnowe, oparte na wyrażeniach
  • Statystyki systemowe i słownikowe
  • Statystyki adaptywne

Logiczna i fizyczna struktura bazy

  • Przestrzenie tabel
  • Segmenty
  • Rozszerzenia
  • Bloki

Optymalizacja pełnego odczytu poprzez prawidłową gospodarkę miejscem

  • Kiedy stosować pełny odczyt
  • Alokacja przestrzeni w bloku i segmencie, wskaźnik wysokiej wody, PCTFREE
  • Wpływ operacji DML oraz sposobu alokacji przestrzeni na wydajność odczytów
  • Ładowanie danych ścieżką konwencjonalną i bezpośrednią
  • Reorganizacja fizyczna danych, obcinanie, defragmentacja, przebudowa

Optymalizacja pełnego odczytu poprzez fizyczne wydzielenie „gorących danych”

  • Tablice tymczasowe
  • Partycjonowanie
  • Widoki zmaterializowane

Optymalizacja pełnego odczytu poprzez kompresję  danych

  • Kompresja OLTP
  • Kompresja OLAP

Optymalizacja odczytu poprzez indeks

  • Pojęcie ROWID
  • Budowa indeksów BTREE
  • Porównanie efektywności dostępu do danych poprzez indeksy BTREE i FULL SCAN
  • Wpływ indeksów na operacje DML
  • Strategie zakładania i usuwanie indeksów
  • Indeks „dobry” i „zły”,  wpływ entropii fizycznego rozmieszczenia danych na koszty użycia indeksu
  • Właściwości i statystyki indeksów
  • Rodzaje odczytów: UNIQUE, RANGE, SKIP, FULL, FAST FULL, MIN/MAX
  • Rodzaje indeksów: unikalne, funkcyjne, wielokolumnowe, z odwróconym kluczem, lokalne/globalne, wirtualne, niewidzialne
  • Wartości NULL w indeksach
  • Tablice zorganizowane indeksowo (IOT)
  • Indeksy bitmapowe i złączeniowe

Optymalizacja procesu sortowania

  • Sortowanie pamięciowe
  • Sortowania indeksowe
  • Sortowania lingwistyczne

Optymalizacja złączeń i podzapytań

  • Metody łączenia: MERGE, HASH, NESTED LOOP
  • Złączenia w systemach OLTP i OLAP
  • Złączenia gwiazdowe
  • Kolejność łączeń
  • Złączenia zewnętrzne

Monitorowanie wydajności i znajdowanie wąskich gardeł procesu

  • v$sql…., dba_hist…
  • Śledzenie sesji bazodanowej/procesu
  • Śledzenie sesji aplikacyjnej/użytkownika  w modelu dzierżawy połączenia do bazy danych
  • Narzędzie TkProf, TrcSess

Wydajność kodu PL/SQL

Używanie wartości literalnych w poleceniach SQL

zasady współdzielenia kursorów

używanie wartości literalnych w poleceniach SQL

kursory adaptywne

Prawidłowy sposób komunikacji SQL <=> PL/SQL

kursory a operacje masowe

prefetch

for update

Funkcje własne w SQL

lokalne

buforowanie wyników funkcji

determinizm a wydajność

  • Przekazywanie parametrów przez kopię/wskaźnik
  • Wtapianie krótkich procedur na etapie kompilacji
  • Zarządzanie kompilatorem

poziomy optymalizacji kompilatora

Natywna kompilacja

  • Inne aspekty optymalizacji PL/SQL

Sugerowane szkolenia poprzedzające
ORA_S2, ORA_P2

Sites Published:

Slovenia - Oracle - Tuning SQL commands and performance of PL/SQL programs

Croatia - Oracle - Tuning SQL commands and performance of PL/SQL programs

Serbia - Oracle - Tuning SQL commands and performance of PL/SQL programs

Bhutan - Oracle - Tuning SQL commands and performance of PL/SQL programs

Nepal - Oracle - Tuning SQL commands and performance of PL/SQL programs

Uzbekistan - Oracle - Tuning SQL commands and performance of PL/SQL programs