Plan zapytań - Query plan

Plan kwerend (lub kwerendy plan wykonania ) jest sekwencja kroków używanych do dostępu do danych w SQL systemu zarządzania relacyjną bazą danych . Jest to szczególny przypadek koncepcji modelu relacyjnego planów dostępu.

Ponieważ SQL jest deklaratywny , istnieje zazwyczaj wiele alternatywnych sposobów wykonania danego zapytania o bardzo zróżnicowanej wydajności. Po przesłaniu 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 bazy danych i administratorzy czasami muszą ręcznie zbadać i dostroić plany opracowane 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 zwrotu planu dla danego zapytania. Niektóre pakiety zawierają narzędzia, które wygenerują graficzną reprezentację planu zapytania. Inne narzędzia pozwalają na ustawienie specjalnego trybu połączenia, aby DBMS zwrócił tekstowy opis planu zapytania. Inny mechanizm pobierania planu kwerend polega na wysyłaniu kwerendy do wirtualnej tabeli bazy danych po wykonaniu kwerendy 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ładu łączenia dwóch tabel w dołączonej przykładowej bazie danych:

SELECT *
FROM HumanResources.Employee AS e
    INNER JOIN Person.Contact AS c
    ON e.ContactID = c.ContactID
ORDER BY c.LastName

Interfejs użytkownika umożliwia eksplorację różnych atrybutów operatorów zaangażowanych w plan zapytania, w tym typu operatora, liczby wierszy zużywanych lub wytwarzanych przez każdy operator oraz oczekiwanego kosztu pracy każdego operatora.

Microsoft SQL Server Management Studio wyświetla przykładowy plan kwerend.

Plany tekstowe

Tekstowy plan podany dla tego samego zapytania na zrzucie ekranu jest pokazany tutaj:

StmtText
----
  |--Sort(ORDER BY:([c].[LastName] ASC))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[ContactID], [Expr1004]) WITH UNORDERED PREFETCH)
            |--Clustered Index Scan(OBJECT:([AdventureWorks].[HumanResources].[Employee].[PK_Employee_EmployeeID] AS [e]))
            |--Clustered Index Seek(OBJECT:([AdventureWorks].[Person].[Contact].[PK_Contact_ContactID] AS [c]),
               SEEK:([c].[ContactID]=[AdventureWorks].[HumanResources].[Employee].[ContactID] as [e].[ContactID]) ORDERED FORWARD)

Wskazuje, że aparat zapytań wykona skanowanie indeksu klucza podstawowego w tabeli Pracownik i wyszukanie pasującego indeksu klucza podstawowego (kolumna ContactID) w tabeli Kontakt, aby znaleźć pasujące wiersze. 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ć różne operatory, których może używać baza danych i które z nich mogą być bardziej wydajne niż inne, jednocześnie zapewniając semantycznie poprawne wyniki zapytania.

Strojenie bazy danych

Przegląd planu zapytań może przedstawić możliwości nowych indeksów lub zmian w istniejących indeksach. Może również wskazywać, że baza danych nie wykorzystuje prawidłowo istniejących indeksów (patrz optymalizator zapytań ).

Strojenie zapytań

Optymalizator zapytań nie zawsze wybierze najbardziej wydajny plan zapytań dla danego zapytania. W niektórych bazach plan kwerend mogą być przeglądane, stwierdzono problemy, a następnie optymalizator kwerendy daje wskazówki , jak ją poprawić. 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 zapytań mogą generować osadzone w zapytaniu wskazówki do wykorzystania przez optymalizator.

Niektóre bazy danych — takie jak Oracle — udostępniają tabelę planu do dostrajania zapytań. Ta tabela planu zwróci koszt i czas wykonania zapytania. Oracle oferuje dwa podejścia do optymalizacji:

  1. CBO lub optymalizacja na podstawie kosztów
  2. RBO lub optymalizacja oparta na regułach

RBO jest powoli wycofywane. Aby można było użyć CBO, wszystkie tabele, do których odwołuje się zapytanie, muszą zostać przeanalizowane. Aby przeanalizować tabelę, administrator DBA może uruchomić kod z pakietu DBMS_STATS.

Inne narzędzia do optymalizacji zapytań obejmują:

  1. Śledzenie SQL
  2. Oracle Trace i TKPROF
  3. Plan realizacji programu Microsoft SMS (SQL)
  4. Nagrywanie wydajności Tableau (wszystkie bazy danych)

Bibliografia