poniedziałek, 3 września 2018

SQL - Tuning bazy danych


SQL - Tuning bazy danych

Potrzeba czasu, aby zostać ekspertem od baz danych lub ekspertem administratorem baz danych. To wszystko wiąże się z dużym doświadczeniem w różnych projektach baz danych i dobrych szkoleniach.
Ale poniższa lista może być pomocna dla początkujących, aby mieć dobrą wydajność bazy danych:
·      Użyj projektu bazy danych 3BNF wyjaśnionego w tym tutorialu w rozdziale Koncepcje RDBMS.
·      Unikaj konwersji liczby na znak, ponieważ liczby i znaki są porównywane w różny sposób i powodują obniżenie wydajności.
·      Używając instrukcji SELECT, pobieraj tylko te informacje, które są wymagane, i unikaj używania * w zapytaniach SELECT, ponieważ niepotrzebnie obciążasz system.
·      Twórz indeksy ostrożnie we wszystkich tabelach, w których masz częste operacje wyszukiwania. Unikaj indeksu w tabelach, w których masz mniej operacji wyszukiwania i więcej operacji wstawiania i aktualizacji.
·      Pełne skanowanie tabeli występuje, gdy kolumny w klauzuli WHERE nie mają powiązanego indeksu. Można uniknąć skanowania tabeli, tworząc indeks na kolumnach, które są używane jako warunki w klauzuli WHERE instrukcji SQL.
·      Bądź bardzo ostrożny wobec operatorów równości z liczbami rzeczywistymi i wartościami daty lub czasu. Oba te elementy mogą mieć niewielkie różnice, które nie są oczywiste dla nas, ale uniemożliwiają dokładne dopasowanie, zapobiegając w ten sposób zapytaniom, które zawsze zwracają wiersze.
·      Użyj dopasowywania wzorców rozważnie. LIKE KOL% jest prawidłowym warunkiem WHERE, zmniejszającym zwracany zbiór tylko do tych rekordów z danymi zaczynającymi się od ciągu KOL. Jednak KOL%Y nie zmniejsza dodatkowo zwróconego zestawu wyników, ponieważ %Y nie może być skutecznie oceniony. Wysiłek przeprowadzenia oceny jest zbyt duży, aby można go było wziąć pod uwagę. W takim przypadku używany jest współczynnik KOL%, ale %Y jest wyrzucany. Z tego samego powodu wiodący wieloznaczny %KOL skutecznie uniemożliwia wykorzystanie całego filtru.
·      Dostrajanie zapytań SQL badających strukturę zapytań (i podzapytań), składnię SQL, aby dowiedzieć się, czy zaprojektowałeś swoje tabele, aby obsługiwały szybką manipulację danymi i zapisały zapytanie w optymalny sposób, pozwalając DBMS na efektywną manipulację danymi.
·      W przypadku kwerend, które są wykonywane regularnie, spróbuj użyć procedur. Procedura jest potencjalnie dużą grupą instrukcji SQL. Procedury są kompilowane przez silnik bazy danych, a następnie wykonywane. W przeciwieństwie do instrukcji SQL silnik bazy danych nie musi optymalizować procedury przed jej wykonaniem.
·      Unikaj używania operatora logicznego LUB w zapytaniu, jeśli to możliwe. LUB nieuchronnie spowalnia prawie każde zapytanie względem tabeli o znacznej wielkości.
·      Możesz optymalizować zbiorcze ładowanie danych, usuwając indeksy. Wyobraź sobie tabelę historii z wieloma tysiącami wierszy. Ta tabela historii może również zawierać jeden lub więcej indeksów. Kiedy myślisz o indeksie, zwykle myślisz o szybszym dostępie do tabeli, ale w przypadku ładunków wsadowych możesz odnieść korzyść, usuwając indeks (y).
·      Podczas przeprowadzania transakcji wsadowych należy wykonać polecenie COMMIT po dużej liczbie rekordów, zamiast tworzyć je po każdym utworzeniu rekordu.
·      Planuj regularnie przeprowadzać defragmentację bazy danych, nawet jeśli oznacza to tworzenie co tygodniowego rutynowego działania.

Wbudowane narzędzia tuningowe

Oracle ma wiele narzędzi do zarządzania wydajnością instrukcji SQL, ale wśród nich dwie są bardzo popularne. Te dwa narzędzia to:
·      Explain plan - narzędzie identyfikuje ścieżkę dostępu, która zostanie podjęta po wykonaniu instrukcji SQL.
·      tkprof - mierzy wydajność przez czas, który upłynął podczas każdej fazy przetwarzania instrukcji SQL.
Jeśli chcesz po prostu zmierzyć upływ czasu zapytania w Oracle, możesz użyć polecenia SQL*Plus SET TIMING ON.
Sprawdź dokumentację RDBMS, aby uzyskać więcej szczegółów na temat wyżej wymienionych narzędzi i defragmentacji bazy danych.


Brak komentarzy:

Prześlij komentarz