Optymalizacja poleceń SQL Wprowadzenie

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

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

Optymalizacja poleceń SQL

Optymalizacja poleceń SQL

Optymalizacja poleceń SQL Metody dostępu do danych

Wykład XII. optymalizacja w relacyjnych bazach danych

Cwiczenie 4. Połączenia, struktury dodatkowe

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

Cwiczenie 1. Wys wietlanie plano w wykonania polecen SQL

Rozproszone bazy danych 3

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

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

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

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

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

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Cwiczenie 2. Metody dostępu do danych

Język SQL. Rozdział 2. Proste zapytania

Optymalizacja poleceń SQL Statystyki

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

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

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

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

Procedury i funkcje składowane

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ę

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

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

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

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

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

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

Optymalizacja poleceń SQL Indeksy

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

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Kosztowy optymalizator zapytań

Wprowadzenie do języka SQL

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

Pakiety podprogramów Dynamiczny SQL

Ć wiczenie 3. Statystyki, wskazó wki

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

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

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

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

Przestrzenne bazy danych Podstawy języka SQL

Podstawy języka SQL cz. 2

SQL do zaawansowanych analiz danych część 1.

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Wydajność hurtowni danych opartej o Oracle10g Database

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

Laboratorium Bazy danych SQL 3 1

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

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

SQL SERVER 2012 i nie tylko:

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

Microsoft SQL Server Podstawy T-SQL

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

Tworzenie zapytań do Microsoft SQL Server

Deklarowanie kursora

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

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

Optymalizacja zapytań

Uprawnienia, role, synonimy

Ćwiczenie zapytań języka bazy danych PostgreSQL

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Optymalizacja zapytań część I

Kursory. A. Pankowska 1

Oracle11g: Wprowadzenie do SQL

Paweł Rajba

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

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

Spis treści. Przedmowa

Rozszerzenia grupowania

Relacyjne bazy danych. Podstawy SQL

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Optymalizacja wydajności SZBD

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

Oracle PL/SQL. Paweł Rajba.

Modelowanie wymiarów

Autor: Joanna Karwowska

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

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

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

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

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

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

T-SQL w Microsoft SQL Server 2014 i SQL Server 2012

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Oracle PL/SQL. Paweł Rajba.

Relacyjne bazy danych. Podstawy SQL

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

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

Transkrypt:

Optymalizacja poleceń SQL Wprowadzenie 1

Fazy przetwarzania polecenia SQL 2

Faza parsingu (1) Krok 1. Test składniowy weryfikacja poprawności składniowej polecenia SQL. Krok 2. Test semantyczny m.in. weryfikacja obecności obiektów adresowanych w poleceniu SQL. 3

Faza parsingu (2) 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. SQL> SELECT * FROM pracownicy;... SQL> SELECT sql_id FROM v$sql WHERE sql_text = 'SELECT * FROM pracownicy'; SQL_ID ------------- 01439xwqw8pjw 4

Faza parsingu (3) 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 parsingu ulega 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). Uwaga! Kolejne kroki są kosztowne! 5

Faza parsingu (4) 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. 6

Faza wykonania Następuje realizacja programu wygenerowanego dla polecenia SQL. Jeśli polecenie używało zmiennych wiązania, zostają one zamienione na konkretne wartości. 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

Faza pobrania Występuje tylko dla poleceń SELECT lub poleceń DML z klauzulą RETURNING. Realizuje cykliczne pobieranie danych z bufora bazy danych i przesłanie ich do oprogramowania klienckiego. 8

Optymalizacja Proces doboru odpowiednich struktur danych, metod dostępu i operacji, w celu zminimalizowania kosztu realizacji 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 nowo powstających aplikacji, zakłada duże obciążenie systemu: dużą współbieżność operacji, niski współczynnik trafień w bufor danych. 9

Plan wykonania polecenia SQL (1) 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. 10

Plan wykonania polecenia SQL (2) SELECT * FROM pracownicy NATURAL JOIN zespoly; 0 select statement 1 merge join 2 table access by index rowid on ZESPOLY 4 sort join 3 index full scan on PK_ZESP 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 ---------------------------------------------------------------------------------------- 11

Proces optymalizacji polecenia SQL 1. Przetransformowanie polecenia do mniej kosztownej 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. transformator poleceń polecenie po transformacji estymator polecenie i estymacje generator planów statystyki poprawne polecenie SQL słownik plan wykonania polecenia 12

Transformator polecenia Przekształca polecenie do mniej kosztownej postaci. Polecenia: oryginalne i po transformacji, są semantycznie identyczne. Przykładowe operacje: Scalanie perspektyw (ang. view merging). Przesuwanie predykatów pomiędzy blokami polecenia (ang. predicate pushing). Zastąpienie podzapytania połączeniem (ang. subquery unnesting). Eliminacja połączeń. Zastąpienie zapytania z warunkami z operatorami OR zapytaniami, połączonymi operatorami UNION ALL (ang. OR expansion). Zastąpienie zapytań z operatorami MINUS i INTERSECT przez połączenie. 13

Przykłady transformacji SELECT * FROM pracownicy WHERE etat = 'PROFESOR OR etat = 'ASYSTENT'; SELECT * FROM pracownicy WHERE etat = 'PROFESOR' UNION ALL SELECT * FROM pracownicy WHERE etat = 'ASYSTENT'; CREATE VIEW bogaci_v AS SELECT * FROM pracownicy WHERE placa_pod > 10000; SELECT nazwisko, nazwa FROM zespoly NATURAL JOIN bogaci_v ; SELECT nazwisko, nazwa FROM zespoly NATURAL JOIN pracownicy WHERE placa_pod > 10000; SELECT nazwisko FROM bogaci_v WHERE etat = 'ASYSTENT'; SELECT nazwisko FROM (SELECT * FROM pracownicy WHERE placa_pod > 10000 AND etat = 'ASYSTENT'); SELECT nazwisko FROM pracownicy WHERE id_zesp IN (SELECT id_zesp FROM zespoly WHERE nazwa = 'ALGORYTMY'); SELECT nazwisko FROM pracownicy JOIN zespoly USING(id_zesp) WHERE nazwa = 'ALGORYTMY'; 14

Generator planów wykonania polecenia 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. 15

Estymator kosztu planu wykonania 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. 16

Wybór celu optymalizacji (1) 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. 17

Wybór celu optymalizacji (2) Dla bieżącej sesji parametr OPTIMIZER_MODE: ALL_ROWS optymalizacja maksymalizująca przepustowość FIRST_ROWS_n optymalizacja minimalizująca łączny czas odczytania pierwszych n krotek (n może być równe (1,10,100 lub 1000) ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_1; Przy użyciu wskazówki (dla konkretnego polecenia SQL): SELECT /* + ALL_ROWS */ nazwisko FROM... 18

Zmienne wiązania w poleceniu SQL (1) Pozwalają na sparametryzowanie polecenia SQL> variable zespol number; SQL> exec :zespol := 10 Procedura PL/SQL została zakończona pomyślnie. SQL> print :zespol ZESPOL ------ 10 SQL> SELECT count(*) FROM PRACOWNICY WHERE id_zesp = :zespol; COUNT(*) -------- 2 SQL> exec :zespol := 20 Procedura PL/SQL została zakończona pomyślnie. SQL> SELECT count(*) FROM PRACOWNICY WHERE id_zesp = :zespol; COUNT(*) -------- 7 19

Zmienne wiązania w poleceniu SQL (2) Umożliwiają wielokrotne użycie tego samego planu wykonania przy kolejnych wywołaniach polecenia z różnymi wartościami zmiennej wiązania tzw. współdzielenie kursora (domyślne działanie) Przy pierwszym wywołaniu polecenia ze zmienną wiązania optymalizator spogląda na wartość zmiennej celem wygenerowania optymalnego planu Problem kolejne wywołania tego samego polecenia z innymi wartościami dla zmiennej wiązania mogą przetwarzać dane o innej charakterystyce niż te z pierwszego wywołania Rozwiązanie optymalizator obserwuje kolejne wywołania i podejmuje decyzje, czy dla kolejnego wywołania polecenia z inną wartością zmiennej wiązania wygenerować nowy plan Efekt być może wiele planów wykonania dla tego samego polecenia 20