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

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

Optymalizacja poleceń SQL Wprowadzenie

Optymalizacja poleceń SQL

Optymalizacja poleceń SQL

Rozproszone bazy danych 3

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

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

Cwiczenie 2. Metody dostępu do danych

Optymalizacja poleceń SQL Metody dostępu do danych

Kosztowy optymalizator zapytań

Cwiczenie 1. Wys wietlanie plano w wykonania polecen SQL

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

Cwiczenie 4. Połączenia, struktury dodatkowe

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. UŜytkownicy i schematy (2) UŜytkownicy i schematy (1) baza danych: ZESP99

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

Wykład XII. optymalizacja w relacyjnych bazach danych

Rozszerzenia grupowania

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

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

Uprawnienia, role, synonimy

Wydajność hurtowni danych opartej o Oracle10g Database

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

Optymalizacja poleceń SQL Statystyki

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

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

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Ć wiczenie 3. Statystyki, wskazó wki

Performance Tuning. w środowisku RAC/WebLogic na maszynach Sun T5220

Ćwiczenie 14 autoryzacja

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Oracle11g: Wprowadzenie do SQL

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Pakiety podprogramów Dynamiczny SQL

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

1.5.3 Do czego słuŝą tymczasowe przestrzenie Zarządzanie plikami danych

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Optymalizacja wydajności SZBD

Baza danych inside. Biologiczne Aplikacje Baz Danych

SQL SERVER 2012 i nie tylko:

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

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

Relacyjne bazy danych. Podstawy SQL

Ćwiczenie 5. Strojenie poleceń SQL

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

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

Optymalizacja zapytań

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

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Modelowanie wymiarów

Przestrzenne bazy danych Podstawy języka SQL

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

Bazy Danych II. Ćwiczenia

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

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

Oracle PL/SQL. Paweł Rajba.

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Zapytania z ograniczeniem czasowym w Oracle

Relacyjne bazy danych. Podstawy SQL

Bazy Danych i Usługi Sieciowe

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

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

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Podstawy języka SQL cz. 2

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

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

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

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

Paweł Rajba

Grupowanie i funkcje agregacji

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Język PL/SQL. Rozdział 6. Procedury wyzwalane

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Język PL/SQL Procedury i funkcje składowane

Bazy danych i usługi sieciowe

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Wykład 6. SQL praca z tabelami 3

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

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

SQL (ang. Structured Query Language)

Grupowanie i funkcje agregujące

Block Change Tracking

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Microsoft SQL Server Podstawy T-SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Transkrypt:

Optymalizacja Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL Pojęcie i cel optymalizacji, schemat optymalizacji, plan wykonania polecenia SQL, polecenie EXPLAIN PLAN, dyrektywa AUTOTRACE, wybór celu optymalizacji Proces doboru odpowiednich struktur danych, metod dostępu i operacji, w celu zminimalizowania kosztu realizacji polecenia SQL. Wykonywana przez wyspecjalizowany moduł SZBD optymalizator zapytań. Rodzaje: regułowa: oparta na rankingu metod dostępu do struktur danych, niestosowana, 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 sposobów wykonania polecenia SQL, 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. 1 2 Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Sekwencja operacji, które SZBD uŝywa do wykonania polecenia SQL. Podstawowe informacje zawarte w planie wykonania: ścieŝki dostępu (ang. access path) do kaŝdej z relacji, uŝytych w poleceniu SQL, algorytmy łączenia relacji, kolejność łączenia relacji, operacje na danych, takie jak filtrowanie, sortowanie, agregacja. Dodatkowe informacje w planie: koszt operacji (% wykorzystania czasu procesora), czas wykonania operacji, liczba rekordów i rozmiar danych, przetwarzanych przez operację. Operacje w planie tworzą drzewo. SELECT * FROM pracownicy NATURAL JOIN zespoly; 2 table access by index rowid on ZESPOLY 3 index full scan on PK_ZESP 0 select statement 1 merge join 4 sort join 5 table access full on PRACOWNICY ------------ Id Operation Name Rows Bytes Cost (%CPU) Time ------------ 0 SELECT STATEMENT 14 1036 6 (17) 00:00:01 1 MERGE JOIN 14 1036 6 (17) 00:00:01 2 TABLE ACCESS BY INDEX ROWID ZESPOLY 6 174 2 (0) 00:00:01 3 INDEX FULL SCAN PK_ZESP 6 1 (0) 00:00:01 4 SORT JOIN 14 630 4 (25) 00:00:01 5 TABLE ACCESS FULL PRACOWNICY 14 630 3 (0) 00:00:01 ------------ 3 4

Proces optymalizacji polecenia SQL 1. Sprawdzenie poprawności polecenia przez parser. 2. Przetransformowanie polecenia do optymalnej postaci. 3. Wygenerowanie zbioru potencjalnych planów dla polecenia SQL. 4. Oszacowanie kosztu wykonania kaŝdego planu na podstawie tzw. statystyk. 5. Wybór do realizacji planu z najniŝszym kosztem wykonania. transformator poleceń polecenie po transformacji estymator polecenie i estymacje generator planów Transformator polecenia Przekształca polecenie do optymalnej postaci. Przykładowe operacje: Scalanie perspektyw (ang. view merging). Zastąpienie podzapytania połączeniem (ang. subquery unnesting). Eliminacja połączeń. Zastąpienie warunków z operatorami OR w kilka zapytań, połączonych operatorem UNION ALL (ang. or-expansion). Zastąpienie zapytań z operatorami MINUS i INTERSECT przez połączenie. poprawne polecenie SQL statystyki słownik plan wykonania polecenia 5 6 Generator planów wykonania polecenia Estymator kosztu planu wykonania Tworzy zbiór róŝnych planów wykonania tego samego polecenia. Plany wykonania róŝnią przez: zastosowanie róŝnych kombinacji ścieŝek dostępu, zastosowanie róŝnych algorytmów połączenia relacji, inną kolejność łączenia relacji. Dla kaŝdego planu następuje oszacowanie kosztu wykonania. Moment zakończenia generacji zbioru planów: Jeśli koszt aktualnego planu jest wysoki, generator szuka lepszego planu bardziej intensywnie (rozpatruje więcej alternatywnych planów). Jeśli koszt aktualnego planu jest niski, wówczas generator szybko kończy poszukiwania z uwagi na małe prawdopodobieństwo poprawy. Zajmuje się szacowaniem kosztu plany wykonania polecenia, wyliczając tzw. miary. Zbiór rekordów wynik wykonania operacji w planie: relacja, perspektywa, wynik operacji połączenia, wynik działania operatora GROUP BY. Miary, pozwalające na oszacowanie całkowitego kosztu planu: Selektywność ułamek reprezentujący liczbę rekordów odczytanych ze zbioru przez operację w stosunku do liczby rekordów w zbiorze. Ściśle związana z warunkami, zdefiniowanymi w poleceniu SQL. Zakres: <0, 1>, selektywność 0 nie zostały odczytane Ŝadne rekordy, selektywność 1 zostały odczytane wszystkie rekordy ze zbioru. Liczność liczba rekordów, odczytanych ze zbioru. Koszt reprezentuje jednostki pracy lub zasoby uŝyte do realizacji operacji w planie wykonania, np. liczba operacji we/wy, uŝycie procesora, uŝycie pamięci. 7 8

Polecenie EXPLAIN PLAN (1) Polecenie EXPLAIN PLAN (2) Polecenie SZBD (będzie działać w róŝnych narzędziach). Zapytanie nie jest wykonywane. Przebieg: 1. Utworzenie relacji PLAN_TABLE (raz w schemacie): SQL> @$ORACLE_HOME\RDBMS\ADMIN\UTLXPLAN.SQL a) wykonanie skryptu utlxpls.sql SQL> @$ORACLE_HOME\RDBMS\ADMIN\UTLXPLS.SQL b) wykonanie polecenia 2. Wygenerowanie planu wykonania zapytania: EXPLAIN PLAN [ SET STATEMENT_ID = 'identyfikator' ] FOR SELECT... FROM... WHERE... ; SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, identyfikator','basic')); w isql*plus ustawić zmienną markup html preformat na wartość on set markup html preformat on 9 10 Polecenie EXPLAIN PLAN (3) Polecenie EXPLAIN PLAN (4) przykład: c) wykonanie zapytania: SQL> EXPLAIN PLAN set statement_id = plan01 FOR SELECT * FROM pracownicy; Wyjaśniono SQL> set markup html preformat on SQL> SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, plan01','basic')); PLAN_TABLE_OUTPUT -------------------------------- Plan hash value: 363874572 Id Operation Name 0 SELECT STATEMENT 1 TABLE ACCESS FULL PRACOWNICY SQL> set markup html preformat off SELECT cardinality "Rows", lpad(' ',level-1) operation ' ' options ' ' object_name "Plan" FROM PLAN_TABLE CONNECT BY prior id = parent_id AND prior statement_id = statement_id START WITH id = 0 AND statement_id = identyfikator' ORDER BY id; 11 12

Dyrektywa AUTOTRACE (1) Dyrektywa AUTOTRACE (2) Działa tylko w SQL*Plus. Po wykonaniu polecenia wyświetlany jest raport zawierający plan wykonania polecenia i dodatkowe informacje. Administrator musi uŝytkownikowi nadać rolę PLUSTRACE: SQL> @$ORACLE_HOME\SQLPLUS\ADMIN\PLUSTRCE.SQL SQL> GRANT PLUSTRACE TO SCOTT; SET AUTOTRACE OFF SET AUTOTRACE ON EXPLAIN SET AUTOTRACE ON STATISTICS SET AUTOTRACE ON SET AUTOTRACE TRACEONLY wyłączenie generowania raportu wynik zapytania + plan wykonania wynik zapytania + statystyki wykonania wynik zapytania + plan wykonania + statystyki wykonania plan wykonania + statystyki Dyrektywa: SET AUTOTRACE [ON OFF] [TRACEONLY] [ EXPLAIN ] [ STATISTICS ] SQL> SET AUTOTRACE ON EXPLAIN SQL> SELECT nazwisko FROM pracownicy WHERE id_prac=100; NAZWISKO ----------- KOWALSKI 13 Plan wykonania -------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=22) 1 0 TABLE ACCESS (BY ROWID) OF 'PRACOWNICY' (Cost=1 Card=1 Bytes=22) 2 1 INDEX (UNIQUE SCAN) OF 'PK_PRAC' (UNIQUE) (c) SQL> Instytut SET Informatyki AUTOTRACE Politechniki OFF Poznańskiej 14 Dyrektywa AUTOTRACE (3) Wybór celu optymalizacji (1) Statystyki wykonania polecenia: db block gets liczba bloków danych, które zostały odczytane z bufora bazy danych przez polecenia INSERT, UPDATE, DELETE i SELECT FOR UPDATE, consistent gets liczba bloków danych, które zostały odczytane z bufora bazy danych przez zapytania bez klauzuli FOR UPDATE. physical reads liczba bloków, które zostały odczytane z dysków dla poleceń INSERT, UPDATE, DELETE, SELECT i SELECT FOR UPDATE. sorts (memory) liczba operacji sortowania, wykonanych całkowicie w pamięci sorts (disk) liczba operacji sortowania, zapisu na dysku rows processed liczba przetworzonych rekordów. logical reads = db block gets + consistent gets całkowita liczba bloków odczytanych z bufora bazy danych. Najlepsza przepustowość wykorzystanie jak najmniejszych zasobów systemowych do uzyskania wszystkich rekordów polecenia SQL. Dla aplikacji wykonywanych wsadowo, np. drukowanych raportów. NajwaŜniejszy krótki czas zakończenia całego zadania, mniej waŝny czas odpowiedzi. Najkrótszy czas odpowiedzi wykorzystanie jak najmniejszych zasobów do uzyskania pierwszego rekordu polecenia SQL. Dla aplikacji interaktywnych, np. formularzy ekranowych, zapytań w SQL*Plus. NajwaŜniejszy krótki czas odpowiedzi uŝytkownik chce jak najszybciej zobaczyć pierwszy rekord (lub kilka pierwszych rekordów) polecenia. 15 16

Wybór celu optymalizacji (2) Dla bieŝącej sesji parametr OPTIMIZER_MODE: ALL_ROWS: kosztowa maksymalizująca przepustowość FIRST_ROWS: kosztowa minimalizująca czas odpowiedzi FIRST_ROWS_n: kosztowa minimalizująca łączny czas odczytania pierwszych n (1,10,100,1000) krotek ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS; 17