Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przed omówieniem technik programowego używania języka SQL należy omówić sposób przetwarzania instrukcji SQL. Kroki te są wspólne dla wszystkich trzech technik, chociaż każda technika wykonuje je w różnym czasie. Poniższa ilustracja przedstawia kroki związane z przetwarzaniem instrukcji SQL, które zostały omówione w pozostałej części tej sekcji.
Aby przetworzyć instrukcję SQL, usługa DBMS wykonuje następujące pięć kroków:
Usługa DBMS najpierw analizuje instrukcję SQL. Dzieli instrukcję na poszczególne wyrazy, nazywane tokenami, upewnia się, że instrukcja ma prawidłowe czasowniki i prawidłowe klauzule itd. Błędy składniowe i błędy pisowni można wykryć w tym kroku.
System DBMS weryfikuje instrukcję . Sprawdza instrukcję względem katalogu systemowego. Czy wszystkie tabele o nazwie w instrukcji istnieją w bazie danych? Czy wszystkie kolumny istnieją i czy nazwy kolumn są jednoznaczne? Czy użytkownik ma wymagane uprawnienia do wykonania instrukcji? W tym kroku można wykryć pewne błędy semantyczne.
DBMS generuje plan dostępu dla zapytania. Plan dostępu to binarna reprezentacja kroków wymaganych do wykonania instrukcji; jest to odpowiednik kodu wykonywalnego DBMS.
System DBMS optymalizuje plan dostępu. Bada różne sposoby przeprowadzania planu dostępu. Czy indeks może służyć do przyspieszenia wyszukiwania? Czy system DBMS najpierw powinien zastosować warunek wyszukiwania do tabeli A, a następnie dołączyć go do tabeli B, czy powinien rozpocząć się od sprzężenia i użyć warunku wyszukiwania później? Czy można uniknąć sekwencyjnego wyszukiwania w tabeli lub zmniejszyć go do podzbioru tabeli? Po zapoznaniu się z alternatywami usługa DBMS wybierze jedną z nich.
Usługa DBMS wykonuje instrukcję, uruchamiając plan dostępu.
Kroki używane do przetwarzania instrukcji SQL różnią się w zależności od wymaganego dostępu do bazy danych i ilości czasu, jaki zajmują. Analizowanie instrukcji SQL nie wymaga dostępu do bazy danych i można to zrobić bardzo szybko. Z kolei optymalizacja jest procesem intensywnie korzystającym z procesora i wymaga dostępu do katalogu systemowego. W przypadku złożonego, wielotabłowego zapytania optymalizator może eksplorować tysiące różnych sposobów wykonywania tego samego zapytania. Jednak koszt wykonywania zapytania nieefektywnie jest zwykle tak wysoki, że czas spędzony w optymalizacji jest większy niż odzyskany w zwiększonej szybkości wykonywania zapytań. Jest to jeszcze ważniejsze, jeśli ten sam zoptymalizowany plan dostępu może być używany do wykonywania powtarzających się zapytań.