Навигация по сайту

Популярные статьи

Teoria optymalizacji i SQL Server

Zapytaj dwudziestu administratorów baz danych o ich ulubione metody i strategie optymalizacji, a oni powiedzą ci o indeksowaniu, dodaniu dodatkowej pamięci i wielu innych. Czy można zamówić wiele różnych podejść do optymalizacji? Prawdopodobnie nie. Czy można połączyć mozaikę różnych strategii, sprawdzając jednocześnie, jak jedna z nich odnosi się do drugiej?

Pierwszą rzeczą do powiedzenia jest to, że nie należy stosować wszystkich znanych strategii, ponieważ wiele z nich ma zależności wewnętrzne i zaniedbane. Na przykład, użycie indeksowania w celu zwiększenia szybkości pobierania danych zwiększy czas wykonywania transakcji, co jest związane z konkurencją. Widzimy więc bezpośredni związek między indeksacją a konkurencją. Możesz znaleźć znacznie więcej skrzyżowań. Niektóre strategie poprawy wydajności mogą być stosowane bezpośrednio, podczas gdy skuteczność innych bezpośrednio zależy od tego, czy inne zostały zastosowane wcześniej.

Teoria optymalizacji bada te zależności i oferuje środowisko do planowania i tworzenia zoptymalizowanego repozytorium danych (rysunek 1.3). Każda z tych strategii ma kilka specyficznych metodologii i jest aktywowana za pomocą strategii wsparcia, ale żadna pojedyncza strategia nie jest w stanie przezwyciężyć wad strategii wspierających.

Model obwodu

Moją główną strategią zwiększania wydajności jest staranne zaprojektowanie obwodu. Dobry schemat umożliwi kwerendy wsadowe i ułatwi planowanie indeksów.

Aby stworzyć skuteczny schemat, wykonaj następujące wskazówki:

? unikać nadmiernej złożoności;

? starannie wybierz klucze;

? uważaj na dane opcjonalne;

? użyj pewnego poziomu abstrakcji.

Jestem pewien, że zły model danych jest główną przyczyną słabych wyników; te problemy są kaskadowane przez innych. W rezultacie bazę danych można uznać za „martwą”.

W rezultacie bazę danych można uznać za „martwą”

Rys. 1.3. Teoria optymalizacji mówi, że każda strategia zależy od drugiej i jest przez nią aktywowana.

Wnioski

SQL jest systemem zapytań wsadowych, a iteracyjne operacje wierszowe faktycznie działają jak masa małych pojedynczych partii. Jeśli metoda iteracyjna jest implementowana przy użyciu kursora serwera lub cykli ADO, kod sekwencyjny będzie dość drogi. Moją drugą strategią zwiększania wydajności jest wykorzystanie rozwiązań pakietowych. Jednocześnie nawet przetwarzanie wsadowe nie będzie w stanie przezwyciężyć wad słabego lub zbyt złożonego modelu obwodu.

Decydując się na użycie sekwencyjnego kodu lub żądań wsadowych, przeczytaj tabelę. 1.4 - będzie służyć jako dobry przewodnik do działania.

Tabela 1.4. Metody programowania

Zadanie

Najlepsze rozwiązanie

Wyrafinowana logika biznesowa

Żądania, podzapytania, cte

Dynamiczne kursory generacji DDL

Odbuduj listę

Zmienne lub kursor

Krzyż tabeli

Zapytanie z pivot lub klauzulą ​​case

Przechodząc przez hierarchię

Funkcja niestandardowa lub cte

Łączne kwoty

Kursor

Dodatkowe W rozdziale 20 dowiesz się, jak znacząco poprawić wydajność, przekształcając informacje w złożone kursory logiczne w zapytania wsadowe.

Indeksowanie

Indeksowanie wydajności jest pomostem między zapytaniami i danymi, a jednocześnie kluczową strategią zwiększania wydajności. Strategia wykorzystywana w indeksach klastrowych do ograniczania losowych wyszukiwań i grupowania wierszy na jednej stronie danych wykorzystuje indeksy nieklastrowane do obsługi operacji wyszukiwania i wyszukiwania, unikając niepotrzebnych indeksów, które mogą znacznie przyspieszyć wykonywanie pakietów. Jednak nawet dobre indeksy nie będą w stanie zapisać z nieskalowalnych programów.

Dodatkowe tworzenie indeksów klastrowych, nieklastrowanych i innych Szczegółowe informacje opisano w rozdziale 50.

Konkurencja

Blokowanie jest bardziej skomplikowanym problemem, niż uważa większość programistów, a większość administratorów baz danych musi go rozwiązać, obniżając poziom izolacji transakcji do braku blokady, co jest bardzo niebezpieczne.

Konkurencję można porównać do źródła wody. Jeśli ludzie, imponująco chodzący, czekają na swoją kolej, aby napełnić kubki, sytuacja jest stabilna. Ustawienie parametru nolock jest równoznaczne z wywołaniem: „Wszystko spieszy się do źródła!” Oczywiście w tym przypadku sytuacja wymknie się spod kontroli i nieuniknione jest zmiażdżenie. W takiej sytuacji lepiej jest konsekwentnie wlewać wodę do kubków, zmniejszając jednocześnie czas u źródła. Sytuacja jest podobna w bazach danych: lepiej ograniczyć się do małych zapytań lub skrócić czas potrzebny do zakończenia transakcji. Aby tworzyć wydajne transakcje, należy opracować skuteczny schemat, używać kodu wsadowego i indeksów.

Po schemacie, zapytaniach i indeksach skrócono czas realizacji transakcji, pozostawiając tylko logikę niezbędną w transakcjach logicznych i uważając na logikę wyzwalaczy, ponieważ będzie ona nadal zaangażowana w transakcje. Jednocześnie zmniejszenie zablokowanych zasobów nie zapobiegnie nadmiernym skanom tabel.

Rozszerzona skalowalność

Jeśli schemat, zapytania, indeksy i transakcje działają tak, jak są, możesz skorzystać z ulepszonych narzędzi skalowalności SQL Server:

? izolacja migawek;

? oddzielenie tabel;

? widoki indeksowane;

? broker usług.

Wydaje ci się, że osiągnąłeś dobre wyniki bez korzystania z tych technologii? Jest możliwe. Osiągniesz jednak najlepsze wyniki dzięki technologii każdego z tych komponentów.

Teoria optymalizacji, w której ujawniają się zależności między różnymi technologiami optymalizacji, jest koncepcją rewolucyjną. Najnowsze informacje na temat teorii optymalizacji, a także moje prezentacje rozwiązań poprawiających wydajność można znaleźć na stronie www. Biblia SQLServer. com.

Podsumowanie

Zasady architektury informacji są podstawą rozwoju bazy danych. Zasady te ujawniają siedem współzależnych reguł dotyczących hurtowni danych: prostota, użyteczność, integralność danych, wydajność, dostępność, skalowalność i bezpieczeństwo. Każda z tych zasad jest niezwykle ważna przy projektowaniu dowolnej bazy danych.

Tak więc w części I książki kontynuowana jest prezentacja podstawowych pojęć baz danych. W następnym rozdziale przyjrzymy się strukturze relacyjnych baz danych.

Źródło: Nielsen, Paul. Microsoft SQL Server 2005. Biblia użytkownika. : Trans. z angielskiego - M .: I.D. Williams ”, 2008. - 1232 s. : il. - Paral. sikorka Angielski

Czy można zamówić wiele różnych podejść do optymalizacji?
Czy można połączyć mozaikę różnych strategii, sprawdzając jednocześnie, jak jedna z nich odnosi się do drugiej?
Wydaje ci się, że osiągnąłeś dobre wyniki bez korzystania z tych technologii?