Mam na myśli, w kategoriach zapytań SQL, czy są one kompilowane lub interpretowane na niskim poziomie ?. Jak to działa wewnętrznie, Jest to instrukcja SQL interpretowana lub kompilowana ?.Czy DBMS (MySQL, SQL Server ....) Jest interpretowany lub kompilowany?
Odpowiedz
To zazwyczaj działa tak:
SQL String ---[Optimizer]---> Execution Plan ---[Execution]---> Result
Ja osobiście chciałbym zobaczyć optymalizator kwerendy (planowanie) jako coś bardzo podobnego do kompilatora. Przekształca instrukcję SQL w coś, co jest łatwiejsze do wykonania. Jednak nie jest to szopka na chipie. Ta "kompilacja" jest dość droga - podobnie jak kompilacja kodu C++. Jest to część, w której oceniane są różne warianty wykonania; kolejność łączenia, indeks do użycia i tak dalej. Dobrą praktyką jest unikanie tego, gdy tylko jest to możliwe, za pomocą parametrów wiązania . Parametry wiązania.
Plan wykonania jest następnie pobierany do wykonania przez bazę danych. Jednak strategia jest już ustalona. wykonanie właśnie to robi. Ta część jest rodzajem interpretacji planu wykonania, a nie SQL.
W końcu jest ona podobna do Javy lub .NET, gdzie kompilacja zamienia kod źródłowy na postać binarną, którą można łatwiej zinterpretować. Jeśli zignorujemy JIT dla tego argumentu, wykonanie programu Java interpretuje ten meta-kod.
użyłem w ten sposób, aby wyjaśnić korzyści using bind parameters for (Oracle) performance w moim free eBook "Use The Index, Luke".
Proszę, popraw mnie, jeśli się mylę: możesz dodać, że Optymalizator może używać buforowania dla planu wykonania, co wyjaśniałoby zalety parametrów wiązania. – bvh
W nowoczesnych środowiskach SQL jest to podejście etapowe, w którym podejmuje się decyzję na określonym poziomie przepływu pracy, niezależnie od tego, czy chce się ponownie użyć i istniejący skompilowany blok, czy też rozpocząć wszystkie etapy ponownie, jeśli uzyska się lepszy plan pewna kombinacja argumentów.
Myślę, że jest to spłata między (ponowną) kompilacją i czasem wykonania wyniku (następnie skompilowanego do kodu wykonywalnego). W zależności od złożoności zapytania, rekompilacja stosująca specyfikację podanych argumentów w czasie wykonywania może nie być warta wysiłku, jeśli czas wykonywania istniejącego kodu jest już niski z powodu przewidywalnego minimalnego zużycia zasobów (np. Odczyt dwóch wierszy i powrót).
Przy większej złożoności zapytań i szacunkowym zużyciu zasobów (wiele dużych tabel, istotny wybór indeksu, możliwe skanowanie tabeli), granulacja twoich statystyk wchodzi w grę. np. jeśli masz selektywności, wartości odstające, zakresy selektywności, śr. wielkości pól, fizyczne rozmiary map itp. optymalizator może dojść do bardzo różnych wniosków z różnymi zestawami argumentów.
Obliczenie najlepszego planu dla 25-złączeń z argumentami zmiennej 10 ++ może zabrać swój czas i zasoby. Jeśli wynik jest szybszy i bardziej wydajny niż wersja "jeden dla wszystkich", to jest wart wysiłku. Szczególnie, że podany zestaw argumentów może zawierać zmieniacze gry, a zapytanie będzie często wykonywane ponownie.
Wreszcie, twój przebieg może się różnić w zależności od dostawcy;)
- 1. Czy JavaScript jest kompilowany czy dwu-przebiegowy?
- 2. MySQL migracji SQL Server
- 3. Czy nowoczesne DBMS uwzględniają ocenę Boolean zwarcia?
- 4. Interoperacyjność SQL-Server i MySQL?
- 5. MySQL REGEXP do SQL Server
- 6. Przeglądaj plik składowania SQL bez importowania go do systemu DBMS?
- 7. Konwersja z Microsoft SQL Server na MySQL
- 8. SQL Server 2005 implementacja MySQL REPLACE INTO?
- 9. Czy rekursja jest dobra w SQL Server?
- 10. Czy SQL Server 2005 ma odpowiednik typu danych ENUM MySql?
- 11. Czy python "elif" jest inaczej kompilowany z innego: if?
- 12. Wszystkie zarezerwowane słowa każdego DBMS
- 13. SQL Server Management Studio Express i MySQL?
- 14. Spełnienie Mysql Group_Concat w SQL Server
- 15. Jak dokładnie interpretowany jest JavaScript?
- 16. Czy oferta SQL Server jest podobna do MySQL NA DUPLIKOWANEJ AKTUALNEJ AKTUALIZACJI
- 17. LIMIT 10..20 w SQL Server
- 18. lub operator Zwarcie w SQL Server
- 19. Pierwszeństwo SQL Server Operator: And i Lub
- 20. Czy jest możliwa zmiana nazwy instancji SQL Server 2005
- 21. Shrink lub kompaktowy w Sql Server CE?
- 22. Dlaczego Node.js nie jest kompilowany przed uruchomieniem?
- 23. Ekwiwalenty SQL Server TOP
- 24. Howto do SQL Server utf8?
- 25. Czy kod C# jest kompilowany do natywnych plików binarnych?
- 26. Jak sprawdzić, czy zmienna tabeli jest pusta w SQL Server?
- 27. Czy SQL Server Compact Edition jest rozsądną alternatywą dla SQLite?
- 28. Sprawdź, czy SQL Server 2005 XML pole jest puste
- 29. Co to jest odpowiednik programu SQL Server INET_ATON
- 30. Symulacja funkcji MySQL group_concat w Microsoft SQL Server 2005?
Pytasz o MySQL w szczególności, czy jakikolwiek DBMS? Ponieważ różne systemy zarządzania bazą danych znajdują się w różnych punktach widma kompilowania i interpretowania – einpoklum