Plan zapytań
Plan zapytań (lub plan wykonania zapytań ) to sekwencja kroków używanych do uzyskiwania dostępu do danych w systemie zarządzania relacyjną bazą danych SQL . Jest to szczególny przypadek relacyjnego modelu planów dostępu.
Ponieważ SQL jest deklaratywny , zazwyczaj istnieje wiele alternatywnych sposobów wykonania danego zapytania, z bardzo zróżnicowaną wydajnością. Po zapytania do bazy danych optymalizator zapytań ocenia niektóre z różnych, poprawnych możliwych planów wykonania zapytania i zwraca to, co uważa za najlepszą opcję. Ponieważ optymalizatory zapytań są niedoskonałe, użytkownicy i administratorzy baz danych muszą czasami ręcznie sprawdzać i dostosowywać plany generowane przez optymalizator, aby uzyskać lepszą wydajność.
Generowanie planów zapytań
Dany system zarządzania bazą danych może oferować jeden lub więcej mechanizmów zwracania planu dla danego zapytania. Niektóre pakiety zawierają narzędzia, które generują graficzną reprezentację planu zapytań. Inne narzędzia umożliwiają ustawienie specjalnego trybu połączenia, aby spowodować, że DBMS zwróci tekstowy opis planu zapytań. Inny mechanizm pobierania planu zapytań polega na wysłaniu zapytania do wirtualnej tabeli bazy danych po wykonaniu zapytania do zbadania. Na przykład w Oracle można to osiągnąć za pomocą instrukcji EXPLAIN PLAN.
Plany graficzne
Na przykład narzędzie Microsoft SQL Server Management Studio, które jest dostarczane z programem Microsoft SQL Server , pokazuje ten plan graficzny podczas wykonywania tego przykładowego łączenia dwóch tabel z dołączoną przykładową bazą danych :
WYBIERZ * Z Zasobów Ludzkich . Pracownik AS e INNER JOIN Osoba . Kontakt AS c ON e . ContactID = c . ContactID ORDER BY c . Nazwisko
Interfejs użytkownika umożliwia eksplorację różnych atrybutów operatorów zaangażowanych w plan zapytań, w tym typ operatora, liczbę wierszy zużywanych lub wytwarzanych przez każdego operatora oraz oczekiwany koszt pracy każdego operatora. |
Plany tekstowe
Plan tekstowy podany dla tego samego zapytania na zrzucie ekranu jest pokazany tutaj:
StmtText ---- |-- Sortuj ( ORDER BY :([ c ] . [ LastName ] ASC )) |-- Zagnieżdżone pętle ( Inner Join , ZEWNĘTRZNE REFERENCJE :( [ e ] . [ ContactID ], [ Expr1004 ]) WITH NIEZAMÓWIONE WSTĘPNE POBIERANIE ) |-- Skanowanie indeksu klastrowego (
OBIEKT :([ AdventureWorks ] . [ HumanResources ] . [ Pracownik ] . [ PK_Employee_EmployeeID ] AS [ e ])) |-- Clustered Index Seek ( OBJECT :( [ AdventureWorks ] . [ Osoba ] . [ Kontakt ] . [ PK_Contact_ContactID ] AS [
c ]), SEEK :([ c ] . [ ContactID ] = [ AdventureWorks ] . [ HumanResources ] . [ Employee ] . [ ContactID ] as [ e ] . [ ContactID ]) ORDERED FORWARD )
Oznacza to, że aparat zapytań wykona skanowanie indeksu klucza podstawowego w tabeli Pracownik i wyszuka dopasowanie w indeksie klucza podstawowego (kolumna ContactID) w tabeli Kontakt w celu znalezienia pasujących wierszy. Wynikowe wiersze z każdej strony zostaną pokazane operatorowi łączenia zagnieżdżonych pętli, posortowane, a następnie zwrócone jako zestaw wyników do połączenia.
Aby dostroić zapytanie, użytkownik musi zrozumieć, z jakich różnych operatorów może korzystać baza danych, i które z nich mogą być bardziej wydajne od innych, a jednocześnie zapewniać semantycznie poprawne wyniki zapytania.
Strojenie bazy danych
Przeglądanie planu kwerend może przedstawiać możliwości dla nowych indeksów lub zmian w istniejących indeksach. Może również pokazać, że baza danych nie wykorzystuje właściwie istniejących indeksów (zobacz optymalizator zapytań ).
Dostrajanie zapytań
Optymalizator zapytań nie zawsze wybierze najbardziej wydajny plan zapytań dla danego zapytania. W niektórych bazach danych można przejrzeć plan zapytań, znaleźć problemy, a następnie optymalizator zapytań podpowie , jak go ulepszyć. W innych bazach danych można wypróbować alternatywy wyrażenia tego samego zapytania (inne zapytania, które zwracają te same wyniki). Niektóre narzędzia do tworzenia zapytań mogą generować osadzone w zapytaniu wskazówki do wykorzystania przez optymalizator.
Niektóre bazy danych — na przykład Oracle — udostępniają tabelę planów do dostrajania zapytań. Ta tabela planu zwróci koszt i czas wykonania zapytania. Oracle oferuje dwa podejścia do optymalizacji:
- CBO lub Optymalizacja oparta na kosztach
- RBO lub optymalizacja oparta na regułach
RBO powoli jest przestarzałe. Aby można było użyć CBO, należy przeanalizować wszystkie tabele, do których odwołuje się zapytanie. Aby przeanalizować tabelę, administrator bazy danych może uruchomić kod z pakietu DBMS_STATS.
Inne narzędzia do optymalizacji zapytań obejmują:
- Śledzenie SQL
- Oracle Trace i TKPROF
- Plan wykonania programu Microsoft SMS (SQL).
- Nagrywanie wydajności Tableau (wszystkie DB)