„Relacyjne Bazy Danych (Oracle) ”

25
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego „Relacyjne Bazy Danych (Oracle)Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnychPrezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 www.kapitalludzki.p.lodz.pl 1

description

„Relacyjne Bazy Danych (Oracle) ” Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. - PowerPoint PPT Presentation

Transcript of „Relacyjne Bazy Danych (Oracle) ”

Page 1: „Relacyjne Bazy Danych (Oracle) ”

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

„Relacyjne Bazy Danych (Oracle)”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl

1

Page 2: „Relacyjne Bazy Danych (Oracle) ”

Optymalizacja

Zasoby wykorzystywane przez bazę danych można podzielić na cztery grupy:

Jednostka obliczeniowa CPU (Procesor/y) Pamięć masowa (Dysk twardy, macierz dyskowa) Zasoby sieciowe (połączenie sieciowe) Zasoby pamięci operacyjnej (pamięć RAM)

Page 3: „Relacyjne Bazy Danych (Oracle) ”

CPU

Zasów wykorzystywany we wszystkich operacjach związanych z bazą danych

Szybkości działania większości z nich nie można poprawić

W przypadku zapytań SQL najczęściej wykorzystywany jest czas procesora do wykonania operacji

Przetwarzanie zapytania (Statement Parse) Obliczenia matematyczne w zapytaniach

Page 4: „Relacyjne Bazy Danych (Oracle) ”

Pamięć masowa

W pamięci masowej przetrzymywane są dane bazy, szybkość pamięci masowej ma kluczowy wpływ na działanie baz danych w zależności od ich rozmiaru

W większości zastosowań wykorzystywane są dyski twarde, często połączone w macierze

Page 5: „Relacyjne Bazy Danych (Oracle) ”

Pamięć masowa

Dysk twardy Budowa Cechy kluczowe wydajności dysku twardego Technologie wykorzystywane w pamięci masowej

Dyski mechaniczne ATA/SATA/SATA II (TCQ, NCQ) SCSI/SAS FibreChannel (FC)

Dyski SSD (Solid State Drive) Dyski hybrydowe

Page 6: „Relacyjne Bazy Danych (Oracle) ”

Pamięć masowa

Macierze dyskowe Macierze programowe (software) Macierze sprzętowe

Zasada działania Wpływ na wydajność bazy danych

Page 7: „Relacyjne Bazy Danych (Oracle) ”

Zasoby sieciowe

Baza danych zwykle rezyduje na innej maszynie niż korzystające z niej aplikacje

Dane powstałe w wyniku wykonania zapytania SQL muszą być przesłane do klienta

W zależności od rozmiaru danych wyjściowych sieć może mieć duży wpływ na wydajność bazy danych z punktu widzenia użytkownika

Głównymi cechami posiadającymi wpływ na wydajności są: przepustowość, opóźnienie (oraz jego wariancja), jakość łącza

Page 8: „Relacyjne Bazy Danych (Oracle) ”

Pamięć operacyjna

Często pomijana w przypadku baz danych Szybkość pamięci operacyjnej ma wpływ na

działanie każdej aplikacji W bazie danych Oracle ilość pamięci

operacyjnej pozwala na zwiększenie rozmiarów segmentów (SGA, PGA,..), a w szczególności

Buffer Cache Library Cache

Page 9: „Relacyjne Bazy Danych (Oracle) ”

SQL Tuning

Czasami wydajność wykonania operacji SQL zależy od jego formy

Zadanie zapytania SQL w innej formie może mieć wpływ na czas jego wykonania

Page 10: „Relacyjne Bazy Danych (Oracle) ”

Optymalizator CBO

Baza danych Oracle posiada wbudowany komponent, którego celem jest wykonanie zapytania w jak najkrótszym czasie

CBO (Cost Based Optimizer) Optymalizator ustala koszt wykonania

poszczególnych etapów zapytania W starszych wersjach bazy dostępny był

optymalizator działający na regułach Optymalizator CBO analizuje zapytanie, ustala

plan dostępu do zasobów w taki sposób, aby koszt wykonania zapytania był jak najmniejszy

Page 11: „Relacyjne Bazy Danych (Oracle) ”

Cost Based Optimizer

Etapy działania Ewaluacja wyrażeń występujących w zapytaniu Transformacja zapytania (zmiana jego treści) Wybranie celu optymalizacji (domyślnie:

przepustowość) Wybór ścieżek dostępu do danych Wybór kolejności łączenia tabel (JOIN)

Page 12: „Relacyjne Bazy Danych (Oracle) ”

Cost Based Optimizer

Cele działania

Największa przepustowość – optymalizacja pod kątem wykorzystania jak najmniejszej liczby zasobów w celu wykonania danego zapytania

Najszybsza odpowiedź – optymalizacja mająca na celu zwrócić pierwszy wiersz wyniku zapytania w możliwie najkrótszym czasie i przy wykorzystaniu możliwie najmniejszej ilości zasobów

Parametr OPTIMIZER_MODE

ALL_ROWS,FIRST_ROWS_n (1,10,100,1000),FIRST_ROWS, RULE (nie używany)

ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS;

Page 13: „Relacyjne Bazy Danych (Oracle) ”

Explain Plan

Plan wykonania zapytania SQL składa się z sekwencji akcji uruchamianych po stronie bazy danych mających na celu pobranie danych z pamięci masowej

Plan ma formę drzewa, każde dziecko w drzewie jest kolejną operacją. Aby rodzic otrzymał dane, muszą się uruchomić akcje w jego dzieciach (nie muszą się jednak zakończyć – dane mogą być oddawane w czasie rzeczywistym)

Page 14: „Relacyjne Bazy Danych (Oracle) ”

Podpowiedzi

Na przebieg procesu działania optymalizatora można wpływać stosując tzw: podpowiedzi (Hints)

SELECT /*+ HINT */ FROM tabela WHERE... SELECT --+ HINT – FROM tabela WHERE...

Np: skanowanie całej tabeli: /*+ FULL(tabela) */ Np: zmiana celu CBO /*+ ALL_ROWS */

Page 15: „Relacyjne Bazy Danych (Oracle) ”

Praktyki

Ograniczanie liczby wierszy w fazie początkowej zapytania

Zmiana konstrukcji warunku może poprawić wydajność

W celu dokładnej analizy planu wykonania zapytania można skorzystać z funkcji autotrace

set autotrace on select PLAN_TABLE_OUTPUT from TABLE

(DBMS_XPLAN.DISPLAY());

Page 16: „Relacyjne Bazy Danych (Oracle) ”

Perspektywa V$SQL_PLAN

Perspektywa pozwala na podgląd planu wykonania zapytania w postaci tabeli

Zagregowanie informacje na temat planu wykonania zapytania można uzyskać z perspektywy V$SQL_PLAN_STATISTICS_ALL

select * from V$SQL_PLAN_STATISTICS_ALL order by sql_id

Page 17: „Relacyjne Bazy Danych (Oracle) ”

Najważniejsze operacje

TABLE ACCESS FULL – pełne skanowanie tabeli

TABLE ACCESS ROWID RANGE – przeglądanie tabeli po zestawie wartości ROWID

TABLE ACCESS BY INDEX ROWID – przeglądanie tabeli po ROWID uzyskanych ze skanowania indeksu

SORT AGGREGATE – pobranie wiersza będącego wynikiem funkcji agregującej

SORT GROUP BY – sortowanie wierszy dla operacji grupowania (wyników grupowania)

SORT ORDER BY – sortowanie przy zapytaniach z wykorzystaniem ORDER BY

SORT UNIQUE – przy wykorzystaniu DISTINCT

Page 18: „Relacyjne Bazy Danych (Oracle) ”

Najważniejsze operacje

BITMAP (AND,OR,MERGE,MINUS) – wykonanie operacji na indeksach bitmapowych

COUNT – operacja zliczania wierszy FILTER – operacja otrzymująca zestaw wierszy a

następnie eliminująca te, które nie spełniają odpowiedniego warunku

HASH GROUP BY – operacja przeprowadzająca hashowanie tabeli w celu wykonania grupowania

HASH UNIQUE – wykorzystane przy DISTINCT

Page 19: „Relacyjne Bazy Danych (Oracle) ”

Najważniejsze operacje

INDEX RANGE SCAN – pozyskanie zestawu ROWID spełniającego kryteria na podstawie skanowania indeksu

INDEX FULL SCAN (DESCENDING) – skanowanie całego indeksu w celu uzyskania pełnego zestawu ROWID spełniającego kryteria

VIEW – operacja wykonywana na perspektywie – wyniki są zwracane do pozostałych operacji

REMOTE – operacja na zdalnej bazie danych

NESTED LOOPS, MERGE JOIN, HASH JOIN – metody wykorzystywane przy łączeniu tabel

Page 20: „Relacyjne Bazy Danych (Oracle) ”

JOIN

Nested Loops – pętle zagnieżdżone. Efektywne przy łączeniu mniejszych tabel. Dla każdego wiersza z pierwszej tabeli sprawdzany jest warunek z każdym wierszem drugiej tabeli.

Dla dużych tabel metoda jest nieefektywna Metoda może wykorzystywać indeksy w celu

uproszczenia pętli wewnętrznej, jednak może to nie być optymalne

Page 21: „Relacyjne Bazy Danych (Oracle) ”

JOIN

Hash JOIN – łączenie dużych tabel. Tworzona jest tablica haszująca dla mniejszej tabeli, po czym wiersze większej tabeli porównywane są z wartością w tablicy haszującej.

Operacja blokuje się na czas utworzenia tablicy haszującej, dopiero po jej zbudowaniu wyniki mogą być zwracane użytkownikowi

Page 22: „Relacyjne Bazy Danych (Oracle) ”

JOIN

Merge JOIN (sort-merge JOIN) – Łączenie danych z użyciem sortowania. Dane muszą zostać posortowane aby ten typ łączenia był efektywny

Dane mogą być posortowane od początku, lub kolumny wykorzystane w klauzuli JOIN mogą posiadać indeks typu B-Tree

Zaletą tej metody jest fakt, że każda tabela skanowana jest jeden raz

Wada – konieczność posortowania obu tabel po kluczu użytym w klauzuli JOIN

Page 23: „Relacyjne Bazy Danych (Oracle) ”

Przykłady

Page 24: „Relacyjne Bazy Danych (Oracle) ”

Przykłady

Page 25: „Relacyjne Bazy Danych (Oracle) ”

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

„Relacyjne Bazy Danych (Oracle)”

Prezentacja jest współfinansowana przez Unię Europejską w ramach

Europejskiego Funduszu Społecznego w projekcie pt.

„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do

zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie

Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl

25