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

Podobne dokumenty
Optymalizacja poleceń SQL Wprowadzenie

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

Optymalizacja poleceń SQL

Optymalizacja poleceń SQL

Cwiczenie 1. Wys wietlanie plano w wykonania polecen SQL

Rozproszone bazy danych 3

Optymalizacja poleceń SQL Metody dostępu do danych

Wykład XII. optymalizacja w relacyjnych bazach danych

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

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Cwiczenie 4. Połączenia, struktury dodatkowe

Kosztowy optymalizator zapytań

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

Cwiczenie 2. Metody dostępu do danych

Optymalizacja poleceń SQL Statystyki

Wydajność hurtowni danych opartej o Oracle10g Database

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

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

Uprawnienia, role, synonimy

Rozszerzenia grupowania

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

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

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

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

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

Oracle11g: Wprowadzenie do SQL

SQL SERVER 2012 i nie tylko:

Optymalizacja wydajności SZBD

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

Pakiety podprogramów Dynamiczny SQL

Ć wiczenie 3. Statystyki, wskazó wki

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

Spis treści. Przedmowa

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

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

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

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

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

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

Optymalizacja zapytań

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

Tworzenie zapytań do Microsoft SQL Server

Oracle PL/SQL. Paweł Rajba.

Optymalizacja poleceń SQL Indeksy

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

Język PL/SQL. Rozdział 2. Kursory

Microsoft SQL Server Podstawy T-SQL

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

Przestrzenne bazy danych Podstawy języka SQL

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

Podstawy języka SQL cz. 2

Autor: Joanna Karwowska

Relacyjne bazy danych a XML

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

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

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

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Optymalizacja zapytań część I

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

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

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

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

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

Język SQL. Rozdział 2. Proste zapytania

Oracle11g: Programowanie w PL/SQL

Indeksowanie w bazach danych

Tuning SQL. Wersja Andrzej Klusiewicz

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Autor: Joanna Karwowska

Oracle PL/SQL. Paweł Rajba.

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

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

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

Modelowanie wymiarów

Projektowani Systemów Inf.

Ćwiczenie 5. Strojenie poleceń SQL

Procedury i funkcje składowane

Politechnika Poznańska TWO

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

Technologie baz danych

Kursory. A. Pankowska 1

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET

Struktura drzewa w MySQL. Michał Tyszczenko

Administracja bazami danych

Ćwiczenie 4. Użytkownicy

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

Zapytania z ograniczeniem czasowym w Oracle

Transkrypt:

Fazy przetwarzania polecenia SQL Optymalizacja poleceń SQL Część 1. Fazy przetwarzania polecenia SQL, pojęcie i cel optymalizacji, schemat optymalizacji, plan wykonania polecenia SQL, polecenie EXPLAIN PLAN, dyrektywa AUTOTRACE, wybór celu optymalizacji 1 2 Faza parsingu (1) Faza parsingu (2) Krok 1. Test składniowy weryfikacja poprawności składniowej polecenia SQL. Krok 3. Otwarcie kursora Kursor obszar pamięci dla struktur danych, związanych z przetwarzaniem polecenia SQL, umieszczony w obszarze współdzielonym serwera. Następuje wyliczenie wartości identyfikatora polecenia SQL przy zastosowaniu funkcji haszującej. Krok 2. Test semantyczny m.in. weryfikacja obecności obiektów adresowanych w poleceniu SQL. SQL> SELECT * FROM pracownicy;... SQL> SELECT sql_id FROM v$sql WHERE sql_text = 'SELECT * FROM pracownicy'; SQL_ID ------------- 01439xwqw8pjw 3 4

Faza parsingu (3) Faza parsingu (4) Krok 4. Wyszukanie w obszarze współdzielonym serwera obecności identycznego, wcześniej wykonanego polecenia SQL Wyszukanie na podstawie identyfikatora wyliczonego w kroku 3. Jeśli znaleziono identyczne polecenie, odczytywany jest zbudowany dla niego plan wykonania, faza parsinguulega zakończeniu(tzw. miękki parsing). Jeśli wyszukanie zakończy się porażką (wcześniej nie zostało wykonane identyczne polecenie), następuje przejście do kroku optymalizacji polecenia (tzw. twardy parsing). Krok 5. Optymalizacja polecenia SQL Wynik plan wykonania polecenia SQL. Krok 6. Generacja binarnego programu wykonania polecenia SQL Konwersja planu wykonania do binarnego programu wykonania polecenia SQL. Plan wykonania polecenia zostaje zapisany w obszarze współdzielonym. Uwaga! Kolejne kroki są kosztowne! 5 6 Faza wykonania Faza pobrania Następuje realizacja programu wygenerowanego dla polecenia SQL. Występuje tylko dla poleceń SELECT lub poleceń DML z klauzulą RETURNING. Jeśli polecenie używało zmiennych wiązania, zostają one zamienione na konkretne wartości. Realizuje cykliczne pobieranie danych z bufora bazy danych i przesłanie ich do oprogramowania klienckiego. System szuka danych dla polecenia w buforze bazy danych, jeśli ich tam nie ma, sprowadza je do bufora z nośników. Jeśli polecenie modyfikuje dane, następuje założenie odpowiednich blokad na danych. 7 8

Optymalizacja Plan wykonania polecenia SQL (1) Proces doboru odpowiednich struktur danych, metod dostępu i operacji, w celu zminimalizowania koszturealizacji polecenia SQL. Wykonywana przez wyspecjalizowany moduł SZBD optymalizator poleceń. 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. 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. 9 10 Plan wykonania polecenia SQL (2) Proces optymalizacji polecenia SQL SELECT * FROM pracownicy NATURAL JOIN zespoly; 0 select statement 1. Przetransformowanie polecenia do optymalnej postaci. 2. Wygenerowanie zbioru potencjalnych planów dla polecenia SQL. 3. Oszacowanie kosztu wykonania każdego planu na podstawie tzw. statystyk. 4. Wybór do realizacji planu z najniższym kosztem wykonania. 1 merge join 2 table access by index rowid on ZESPOLY 3 index full scan on PK_ZESP 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 ---------------------------------------------------------------------------------------- transformator poleceń poprawne polecenie SQL polecenie po transformacji estymator statystyki słownik polecenie i estymacje generator planów plan wykonania polecenia 11 12

Transformator polecenia Generator planów wykonania 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. 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. 13 14 Estymator kosztu planu wykonania Wybór celu optymalizacji (1) 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. 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) Polecenie EXPLAIN PLAN (1) Dla bieżącej sesji parametr OPTIMIZER_MODE: ALL_ROWS optymalizacja maksymalizująca przepustowość FIRST_ROWS optymalizacja minimalizująca czas odpowiedzi (od Oracle10g cel wycofywany, stosować FIRST_ROWS_n) Polecenie SZBD (będzie działać w różnych narzędziach). Polecenie nie jest wykonywane. Przebieg: 1. Utworzenie relacji PLAN_TABLE (raz w schemacie): SQL> @$ORACLE_HOME\RDBMS\ADMIN\UTLXPLAN.SQL FIRST_ROWS_n optymalizacja minimalizująca łączny czas odczytania pierwszych n krotek (n może być równe (1,10,100 lub 1000) Krok zbędny od wersji Oracle10g PLAN_TABLE istnieje w schemacie użytkownika SYS 2. Wygenerowanie planu wykonania polecenia: ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_1; EXPLAIN PLAN [ SET STATEMENT_ID = 'identyfikator' ] FOR SELECT... FROM... WHERE... ; 17 18 Polecenie EXPLAIN PLAN (2) Polecenie EXPLAIN PLAN (3) Przebieg (cd): 3. Obejrzenie wygenerowanego planu użycie funkcji tablicowej DBMS_XPLAN.DISPLAY, parametry: nazwa relacji przechowującej plan, domyślnie PLAN_TABLE, identyfikator polecenia, domyślnie ostatnio wyjaśniane polecenie, poziom szczegółowości prezentowanych informacji o planie: BASIC wyświetlenie tylko podstawowe informacje w planie (id operacji, nazwa obiektu i typ operacji) TYPICAL (domyślnie) wyświetlenie najbardziej odpowiednich informacji dla danego planu (np. predykaty zapytania, równoległe wykonanie zapytania) ALL wyświetlenie wszystkich informacji dla planu SERIAL jak TYPICAL ale bez informacji o równoległym wykonaniu zapytania UWAGA! Jeśli w isql*plus plan jest nieczytelny, ustawić zmienną markup html preformat na wartość on set markup html preformat on dostępny skrypt, zawierający wywołanie funkcji: SQL> @$ORACLE_HOME\RDBMS\ADMIN\UTLXPLS.SQL przykłady: SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, 'zap_1', 'BASIC')); SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); 19 20

Polecenie EXPLAIN PLAN (4) Dyrektywa AUTOTRACE (1) SQL> EXPLAIN PLAN set statement_id = 'plan01' FOR SELECT * FROM pracownicy; Wyjaśniono SQL> set markup html preformat on -- opcjonalnie! 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 -------------------------------------- Działa tylko w SQL*Plus/iSQL*Plus i SQL Developer. Po wykonaniu poleceniawyś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; Dyrektywa: SET AUTOTRACE [ON OFF] [TRACEONLY] [ EXPLAIN ] [ STATISTICS ] SQL> set markup html preformat off 21 22 Dyrektywa AUTOTRACE (2) Dyrektywa AUTOTRACE (3) SET AUTOTRACE OFF SET AUTOTRACE ON EXPLAIN wyłączenie generowania raportu wynik polecenia + plan wykonania SET AUTOTRACE ON STATISTICS wynik polecenia + statystyki wykonania SET AUTOTRACE ON wynik polecenia + plan wykonania + statystyki wykonania SET AUTOTRACE TRACEONLY plan wykonania + statystyki SQL> SET AUTOTRACE ON EXPLAIN SQL> SELECT nazwisko FROM pracownicy WHERE id_prac=100; NAZWISKO ----------- KOWALSKI 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 23 Statystyki wykonania polecenia: dbblockgets liczba bloków danych, które zostały odczytane z bufora bazy danych przez polecenia, najczęściej DML (odczyty aktualnych wersji bloków), odczytane bloki nie mogą być równocześnie odczytane przez inne polecenia (w innych transakcjach), consistentgets liczba bloków danych, które zostały odczytane z bufora bazy danych przez polecenia, najczęściej zapytania (odczyty wersji bloków, które są aktualne z punktu widzenia transakcji wykonującej zapytanie, wersje mogą być rekonstruowane z danych z segmentów wycofania, jeśli np. odczytywany blok został zmodyfikowany przez inną transakcję), physicalreads liczba bloków, które zostały odczytane z dysków dla poleceń, 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, logicalreads= dbblockgets+ consistentgets całkowita liczba bloków odczytanych z bufora bazy danych. 24