Optymalizacja poleceń SQL



Podobne dokumenty
Optymalizacja poleceń SQL

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Optymalizacja poleceń SQL Metody dostępu do danych

Rozproszone bazy danych 3

Optymalizacja poleceń SQL Wprowadzenie

Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL

Fazy przetwarzania polecenia SQL. Faza parsingu (2) Faza parsingu (1) Optymalizacja poleceń SQL Część 1.

Optymalizacja poleceń SQL Indeksy

INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

Kosztowy optymalizator zapytań

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Indeksy. Rozdział 18. Indeksy. Struktura indeksu. Adres rekordu

Cwiczenie 4. Połączenia, struktury dodatkowe

Cwiczenie 2. Metody dostępu do danych

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Wykład XII. optymalizacja w relacyjnych bazach danych

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Optymalizacja poleceń SQL Statystyki

Wydajność hurtowni danych opartej o Oracle10g Database

Strojenie poleceń SQL. (c) Instytut Informatyki Politechniki Poznańskiej 221

Strojenie poleceń SQL. (c) Instytut Informatyki Politechniki Poznańskiej 221

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Modelowanie wymiarów

Fizyczna struktura bazy danych w SQL Serwerze

SQL SERVER 2012 i nie tylko:

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

PODSTAWY BAZ DANYCH. 15. Optymalizacja zapytań. 2009/ Notatki do wykładu "Podstawy baz danych"

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

Optymalizacja zapytań

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Indeksowanie w bazach danych

Relacyjne bazy danych. Podstawy SQL

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Jakub Pilecki Szymon Wojciechowski

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Hurtownie danych - przegląd technologii

Język SQL. Rozdział 2. Proste zapytania

Ć wiczenie 3. Statystyki, wskazó wki

Relacyjne bazy danych. Podstawy SQL

Politechnika Poznańska TWO

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Przestrzenne bazy danych Podstawy języka SQL

Oracle11g: Wprowadzenie do SQL

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Język SQL. Rozdział 8. Język manipulowania danymi DML

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

STROJENIE PRZETWARZAŃ SAS

Hurtownie danych - przegląd technologii

Administracja i programowanie pod Microsoft SQL Server 2000

Wprowadzenie do języka SQL

SQL do zaawansowanych analiz danych część 1.

Technologia HD w IBM DB2

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Indeksy w hurtowniach danych

Administracja i programowanie pod Microsoft SQL Server 2000

Indeksy. Indeks typu B drzewo

Optymalizacja wydajności SZBD

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

(a) T (b) N (c) N (d) T

Systemy GIS Tworzenie zapytań w bazach danych

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

Rozdział 17. Zarządzanie współbieżnością zadania

3. Podzapytania, łączenie tabel i zapytań

P o d s t a w y j ę z y k a S Q L

Tabela wewnętrzna - definicja

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Cwiczenie 1. Wys wietlanie plano w wykonania polecen SQL

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Przykładowa baza danych BIBLIOTEKA

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy danych 11. Algorytmy złaczeń. P. F. Góra

INDEKSY I SORTOWANIE ZEWNĘTRZNE

Wykład 6. SQL praca z tabelami 3

Wprowadzenie do baz danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Uprawnienia, role, synonimy

Opisy efektów kształcenia dla modułu

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Wpływ ustawień parametru wieloblokowego sekwencyjnego czytania danych na czas wykonywania zapytania SQL w bazie danych Oracle 11g

Oracle PL/SQL. Paweł Rajba.

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Transkrypt:

Optymalizacja poleceń SQL Przetwarzanie polecenia SQL użytkownik polecenie PARSER słownik REGUŁOWY RBO plan zapytania RODZAJ OPTYMALIZATORA? GENERATOR KROTEK plan wykonania statystyki KOSZTOWY CBO plan zapytania wynik WYKONANIE (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 2 1

struktury danych metody dostępu reguły operacje statystyki Optymalizacja polecenia SQL transformator estymator zapytań zapytanie po transformacji generator planów zapytanie i estymacje zapytanie SQL statystyki słownik plan wykonania (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 3 Optymalizacja Optymalizacja to proces doboru odpowiednich struktur danych, metod dostępu i operacji (planu wykonania), w celu zminimalizowania kosztu realizacji polecenia. Optymalizacja jest wykonywana przez wyspecjalizowany moduł systemu optymalizator zapytań. regułowa oparta na rankingu metod dostępu do struktur danych preferowana dla aplikacji spadkowych kosztowa oparta na szacowaniu kosztu (czas zajętości procesora, liczby operacji we/wy, zajętość pamięci operacyjnej itp.), wykonania wszystkich potencjalnych planów wykonania zalecana dla wszystkich nowopowstających aplikacji zakłada duże obciążenie systemu: dużą współbieżność operacji, niski współczynnik trafień w bufor danych (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 4 2

Statystyki Informacje charakteryzujące struktury danych dane generowane dla tabeli: liczba wierszy, liczba bloków danych zawierających dane, liczba nigdy nie użytych, zaalokowanych bloków danych, średnia wielkość wolnego miejsca w zajętych blokach danych, liczba łańcuchowanych wierszy, średnia wielkość wiersza, dla wszystkich kolumn liczbę unikalnych wartości oraz wartość minimalną i maksymalną dane generowane dla indeksu: wysokość drzewa, liczbę bloków-liści drzewa, liczbę unikalnych wartości indeksu, średnią liczbę bloków-liści przypadającą na jedną wartość klucza indeksu, średnią liczbę bloków danych (w tabeli) przypadającą jedną wartość klucza indeksu, współczynnik zgrupowania, który określa na ile wiersze w tabeli są uporządkowane wg klucza indeksy. (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 5 Histogramy Szczegółowe statystyki opisujące rozkład wartości poszczególnych kolumn, przydatne w szczególności dla optymalizacji wykorzystania indeksów Liczba wierszy Przykład: 200 Dane: liczba wierszy 1200 zakres wartości 10-80 liczba przedziałów 6 Wartości kolumny 10 30 40 45 55 70 80 (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 6 3

Metody dostępu do danych Przegląd liniowy (ang. full scan) HWM DB_FILE_MULTIBLOCK_READ_COUNT Dostęp za pomocą adresu rekordu (ang. ROWID) ROWID Rozszerzony OOOOOO.FFF.BBBBBB.RRR O - numer obiektu w bazie danych F - względny numer pliku w przestrzeni tabel B - numer bloku w pliku R - numer rekordu w bloku Podstawowy FFFF.BBBBBBBB.RRRR (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 7 Rodzaje sortowania ORDER BY: sortowanie wyników zapytania SELECT * FROM zespoly ORDER BY adres DESC; AGGREGATE: wyliczanie wartości funkcji grupowej SELECT MAX(zatrudniony) FROM pracownicy; GROUP BY: podział relacji na grupy SELECT etat, AVG(placa_pod) FROM pracownicy GROUP BY etat; UNIQUE: eliminacja duplikatów SELECT DISTINCT etat FROM pracownicy; (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 8 4

SELECT ETAT, PLACA_POD FROM PRACOWNICY WHERE NAZWISKO = 'Frankowski'; Indeks B*-drzewo Jezierski węzły wewnętrzne liście drzewa Czyżak Grzybowski Morzy Stefanowski Biały Błażewicz Grzybowski Jezierski Matysiak Mizgajski Waligóra Wożniak Czyżak Frankowski Morzy Pawlak (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 9 Rodzaje B*-drzew Unikalność wartości kluczy: nieunikalne, unikalne Liczba atrybutów w kluczu: zwykłe, skonkatenowane Kompresja: nie skompresowane, skompresowane Porządek kluczy: leksykograficzny, odwrócony (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 10 5

Przesłanki do utworzenia indeksu B*-drzewo na atrybutach często wykorzystywanych w warunkach selekcji, na atrybutach połączeniowych, tylko na atrybutach o dużej selektywności, na atrybutach rzadko modyfikowanych, na atrybutach będących kluczami obcymi (uniknięcie niepotrzebnego blokowania tabeli podrzędnej w przypadku operacji modyfikacji rekordów nadrzędnych) w systemach przetwarzania transakcyjnego - OLTP (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 11 Metody dostępu do indeksu B*- drzewo unikalne przeglądnięcie (ang. unique scan) przeglądnięcie zakresu (ang. range scan) pełne przeglądnięcie (ang. full scan) odczyt blok po bloku - nawigacja po liściach stosowany również do sortowania szybkie pełne przeglądniecie (ang. fast full scan) odczyt wieloblokowy stosowany zamiast full table scan (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 12 6

Połączenia - nested loop Odczyt jednokrotny Tabela zewnętrzna Tabela wewnętrzna Odczyt wielokrotny A A B B CC DD 3 3 2 2 1 1 3 3 2 1 2 3 1 a b c d e 1 e A B B CC 3 2 2 1 1 3 CC 1 DD 3 3 2 2 1 d a c b e d 1 e 3 d Wynik połączenia (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 13 Połączenia - sort merge A A B B CC DD sortowanie CC B B A A DD złączenie CC CC B B A 3 3 2 2 1 1 3 3 1 1 2 2 3 3 3 3 1 1 2 2 3 3 A 3 DD 3 1 1 2 2 2 1 2 3 1 a b c d e 1 e 1 1 2 2 3 b e a c d 3 d b e a c d d 3 d 3 d (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 14 7

Połączenia - hash join Wartości funkcji haszującej 0 1 2 Tabela zewnętrzna A 3 B 2 CC 1 DD 3 FH FH A 3 DD 3 CC 1 B 2 FH FH Tabela wewnętrzna 2 a 1 b 2 c 3 d 1 e Funkcja_haszująca= kolumna_połączeniowa mod 3 Wynik B B CC B B A A 2 1 2 3 3 1 DD 3 CC 1 2 1 2 3 a b c d d e 3 d 1 e (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 15 Wybór optymalizatora ALTER SESSION SET OPTIMIZER_MODE='RULE'; ALTER SESSION SET OPTIMIZER_MODE='CHOOSE'; DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_TABLE_STATS DBMS_STATS.GATHER_INDEX_STATS exec dbms_stats.gather_schema_stats(ownname=>'demo92') exec dbms_stats.gather_table_stats(ownname=>'scott', - tabname=>'klienci') (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 16 8

Analiza planu wykonania zapytania explain plan set statement_id='identyfikator' for wyjaśniane_polecenie; explain plan set statement_id='1' for select sk.nazwa, sp.ilosc from sklepy sk, sprzedaz@lab92 sp where sk.sklep_id=sp.sklep_id; set autotrace {on traceonly} explain set autotrace off (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 17 Analiza planu wykonania zapytania (2) select sk.nazwa, sp.ilosc from sklepy sk, sprzedaz@lab92 sp where sk.sklep_id=sp.sklep_id and sk.miasto='poznań'; OPERATION OPTIONS OBJECT_NAME OBJECT_NODE OTHER --------------------- ---------- ----------- ----------- ------------------------- SELECT STATEMENT NESTED LOOPS REMOTE LAB92.WORLD SELECT "ILOSC","SKLEP_ID" FROM "SPRZEDAZ" "SP" TABLE ACCESS BY INDEX SKLEPY ROWID INDEX UNIQUE SKLEPY_PK SCAN (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 18 9

Analiza planu wykonania zapytania (3) select kl.nazwisko, kl.miasto, sp.ilosc, pr.nazwa from klienci kl, sprzedaz@lab92 sp, produkty@lab92 pr where kl.klient_id=sp.klient_id and sp.produkt_id=pr.produkt_id and pr.produkt_id=30; Execution Plan -------------------------------------------------------------------------- 0 SELECT STATEMENT Optimizer=RULE 1 NESTED LOOPS 2 MERGE JOIN 3 SORT (JOIN) 4 REMOTE* LAB92.WORLD 5 SORT (JOIN) 6 REMOTE* LAB92.WORLD 7 TABLE ACCESS (BY INDEX ROWID) OF 'KLIENCI' 8 INDEX (UNIQUE SCAN) OF 'KLIENCI_PK' (UNIQUE) 4 SERIAL_FROM_REMOTE SELECT "PRODUKT_ID","NAZWA" FROM "PRODUKTY" "PR" WHERE "PRODUKT_ID"=30 6 SERIAL_FROM_REMOTE SELECT "ILOSC","PRODUKT_ID","KLIENT_ID" FROM "SPRZEDAZ" "SP" (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 19 Zapytania rozproszone agregaty wykorzystanie perspektywy select * from V@DB1... V create view... select count(*) from T1... T1 DB1 DB2 T2 select count(*) from T1@DB1... (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 20 10

Zapytania rozproszone połączenia (1) wykonanie operacji T 1 join x T 2 w bazie DB 2 jeżeli T1 jest duża wówczas wystąpi duży koszt transmisji sieciowej wynik read T1 T1 T1 T1 join x T2 T2 DB1 DB2 (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 21 Zapytania rozproszone połączenia (3) wykorzystanie perspektywy select * from V@DB1... V create view... T1 join T2@DB2 on (T1.x=T2.x) T1 DB1 DB2 T2 T1 join x T2 zastąpienie sort-merge przez nested loops w przypadku, gdy niewiele rekordów z T1 łączy się z T2 (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 22 11

Wskazówki ORDERED zachowanie kolejności tabel, takiej jak w klauzuli FROM tabelą zewnętrzną jest pierwsza z lewej select /*+ ORDERED */ sk.nazwa, sp.ilosc from sklepy sk, sprzedaz@lab92 sp where sk.sklep_id=sp.sklep_id; FULL wskazanie tabeli odczytywanej za pomocą full table scan select /*+ FULL(sp) */ sk.nazwa, sp.ilosc from sprzedaz@lab92 sp, sklepy sk where sk.sklep_id=sp.sklep_id; (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 23 Wskazówki (2) DRIVING_SITE wskazanie bazy danych, w której ma zostać wykonane zapytanie select /*+ DRIVING_SITE(sp) */ kl.nazwisko, sp.data, sp.ilosc, sp.produkt_id from klienci kl, sprzedaz@lab92 sp where kl.klient_id=sp.klient_id and kl.miasto='poznań'; (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 24 12

NO_MERGE zapytanie w perspektywie wbudowanej nie jest scalane z zapytaniem głównym select /*+ NO_MERGE(v) */ kl.nazwisko, kl.miasto, v.ilosc, v.nazwa from klienci kl, (select sp.klient_id, sp.ilosc, pr.nazwa, pr.produkt_id from sprzedaz@lab92 sp, produkty@lab92 pr where sp.produkt_id=pr.produkt_id) v where kl.klient_id=v.klient_id and v.produkt_id=30; USE_HASH USE_MERGE USE_NL Wskazówki (3) wybór algorytmu łączenia tabel (c) J.Jezierski, M.Morzy, R. Wrembel: Politechnika Poznańska, Instytut Informatyki 25 Środowisko testowe 1000 rek. 120000 rek. 30 rek. 40 rek. 13