SQL SERVER 2012 i nie tylko:

Podobne dokumenty
STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com

DATABASE SNAPSHOT GEEK DIVE. Cezary Ołtuszyk Blog: coltuszyk.wordpress.com

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

Optymalizacja poleceń SQL Metody dostępu do danych

Optymalizacja poleceń SQL

SQL SERVER 2016 IN MEMORY

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Autor: Joanna Karwowska

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Politechnika Poznańska TWO

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Oracle11g: Wprowadzenie do SQL

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Wykład XII. optymalizacja w relacyjnych bazach danych

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Optymalizacja poleceń SQL Wprowadzenie

Cwiczenie 4. Połączenia, struktury dodatkowe

Bazy danych 11. Algorytmy złaczeń. P. F. Góra

Fizyczna struktura bazy danych w SQL Serwerze

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Microsoft SQL Server Podstawy T-SQL

Systemy GIS Tworzenie zapytań w bazach danych

Fazy przetwarzania polecenia SQL. Faza parsingu (2) Faza parsingu (1) Optymalizacja poleceń SQL Część 1.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Optymalizacja wydajności SZBD

STROJENIE PRZETWARZAŃ SAS

Wykład 6. SQL praca z tabelami 3

BEST S.A. Co nowego w SQL Server 2012 dla programistów. Cezary Ołtuszyk. coltuszyk.wordpress.com

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Wydajność hurtowni danych opartej o Oracle10g Database

Administracja i programowanie pod Microsoft SQL Server 2000

Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL

NORTHWIND. Anonco.pl. ćwiczenia praktyczne. KiK s Tutorials. NORTHWIND dwiczenia praktyczne. ANONCO.PL/SQL SQLSERVERDLAOPORNYCH.WORDPRESS.

Indeksowanie w bazach danych

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Zajęcia prowadzone przez MCT, auditora wiodącego systemów bezpieczeństwa informacji.

Struktura drzewa w MySQL. Michał Tyszczenko

Kosztowy optymalizator zapytań

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Optymalizacja poleceń SQL

Optymalizacja zapytań SQL

T-SQL w Microsoft SQL Server 2014 i SQL Server 2012

AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie. Wydział Geologii, Geofizyki i Ochrony Środowiska. Bazy danych 2

Wirtualizacja baz danych a Dynamic Memory. Cezary Ołtuszyk coltuszyk.wordpress.com

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Spis tre±ci. 1 Wst p Zawarto± rozdziaªów Projekt LoXiM... 2

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Tworzenie zapytań do Microsoft SQL Server

Leszek Stasiak Zastosowanie technologii LINQ w

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Tuning SQL Server dla serwerów WWW

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

WPROWADZENIE DO BAZ DANYCH

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Zapytania do baz danych

Stosowanie indeksów ma swoje korzyści, ale bywa również kosztowne.

DEKLARATYWNE ZARZĄDZANIE W MICROSOFT SQL SERVER

(a) T (b) N (c) N (d) T

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Sortowanie bąbelkowe

Microsoft SQL Server 2012 Krok po kroku

Wprowadzenie do baz danych

Rozproszone bazy danych 3

Bazy danych 12. SQL To i owo. Algorytmy złaczeń.

Spis tre±ci. Przedmowa... Cz ± I

Optymalizacja zapytań

3. Podzapytania, łączenie tabel i zapytań

Bazy danych. dr inż. Arkadiusz Mirakowski

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Modele danych - wykład V. Zagadnienia. 1. Wprowadzenie 2. MOLAP modele danych 3. ROLAP modele danych 4. Podsumowanie 5. Zadanie fajne WPROWADZENIE

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

Relacyjne bazy danych. Podstawy SQL

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Porównanie systemów zarządzania relacyjnymi bazami danych

Rozszerzenia grupowania

Podstawowe funkcje dodatku linq w C#

Spis treści. Przedmowa

QUERY język zapytań do tworzenia raportów w AS/400

OLAP i hurtownie danych c.d.

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

Bazy danych 8. Złaczenia ciag dalszy. Grupowanie.

Konspekt zajęć dotyczących kwerend

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych Access KWERENDY

PODSTAWY BAZ DANYCH. 15. Optymalizacja zapytań. 2009/ Notatki do wykładu "Podstawy baz danych"

Transkrypt:

SQL SERVER 2012 i nie tylko: Wstęp do planów zapytań Cezary Ołtuszyk coltuszyk.wordpress.com

Kilka słów o mnie Starszy Administrator Baz Danych w firmie BEST S.A. (Bazy danych > 1TB) Konsultant z zakresu SQL Server (tuning, troubleshooting, wirtualizacja) Posiadacz certyfikatów MCITP/MCTS z dziedziny SQL Server, HYPER-V, Windows Server Prelegent na konferencjach informatycznych i spotkaniach grup pasjonackich Autor artykułów i blogger (wss.pl, coltuszyk.wordpress.com)

Plan spotkania I. Wprowadzenie do tematu (mierzenie wydajności) II. III. IV. Czytanie i wybieranie danych Łączenie tabel Grupowanie i sortowanie wartości V. Podsumowanie

Wprowadzenie do tematu (mierzenie wydajnosci) Jednym często zadawanych pytań podczas tworzenia oprogramowania jest następujące zdanie: Dlaczego moje zapytanie trwa tak długo? Niestety nie ma na nie uniwersalnej odpowiedzi Są natomiast narzędzia, które pozwalają nam znaleźć odpowiedź dla danego przypadku.

Wprowadzenie do tematu (mierzenie wydajności) Zanim zaczniemy poprawiać nasze zapytania, powinniśmy wiedzieć jak można mierzyć ich wydajność: Czas wykonania zapytań SQL Ilość odczytanych danych Czas zajętości procesora Plan wykonania instrukcji Plany wykonania są zarówno miarą jak i wyjaśnieniem zagadki związanej z wydajnością

Czytanie danych Podstawową jednostką zapisu i odczytu w SQL Server jest strona, która zawiera 8KB danych. Czytając dane z tabeli, tak naprawdę (fizycznie) czytamy 8KB strony. Data Pages Page 1 Page 2 Page 3 Con Funk Russo Woods Akers Funk Woods Barr Smith Martin Page 4 Page 5 Page 6 Smith Owen Jones Martin Pica Jones Smith Ganio Jones Hall Nasze zabiegi związane z przyśpieszeniem odczytu będą wiązały się ze zmniejszeniem ilość stron, które należy przeczytać aby wybrać interesujące nas informacje.

Czytanie danych Operatory Table Skan, Clustered Index Scan i Index Scan świadczą o tym, że SQL Server czyta cały indeks lub całą tabelę w celu podania interesujących nas wartości. Przeciwieństwem operatorów skanujących są operacje typu Seek. Operatory Clustered Index Seek oraz Index Seek mówią nam, że silnik baz danych wie, gdzie znajdują się odpowiednie dane. Nowością wprowadzoną w SQL Server 2012 jest operator Columnstore Index Scan. W przypadku, gdy wybieramy dużą ilość danych z hurtowni, to będzie to prawdopodobnie najefektywniejsza metoda dostępu.

Łączenie tabel Pierwszą rzeczą jaką trzeba powiedzieć na temat łączenia tabel jest rozróżnienie logicznego operatora łączenia od jego fizycznej implementacji. Logiczne operatory łączenia to: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN i CROSS JOIN. Są one używane podczas tworzenia instrukcji T-SQL. W momencie wykonania SQL Server realizując dane łączenie logiczne korzysta z jednego z trzech operatorów fizycznych: Nested Loops, Hash Match, Merge Join Przykład: Programista napisał instrukcję zawierającą łączenie logiczne LEFT JOIN, SQL Server aby podać wynik użył operatora Nested Loops

Łączenie tabel Łączenie tabel za pomocą operatora Nested Loops polega na wybraniu odpowiedniego wiersza z tabeli A, a następnie przeszukaniu tabeli B w celu znalezienia pasujących wierszy. Ci z was, którzy zetknęli się z algorytmiką już się pewnie domyślają jaka jest złożoność obliczeniowa tego rozwiązania ( A x B) i kiedy plan używający Nested Loops jest optymalny. Przykład: Dwie tabele po 1000 rekordów mogą dać łącznie milion porównań podczas łączenia Nested Loops (1000*1000 = 1000000)

Łączenie tabel Algorytm łączenia za pomocą operatora Hash Match wygląda następująco: 1. Pobierane są dane z tabeli A, dla których SQL Server używa funkcji haszującej w celu zbudowania odpowiednich kubełków 2. Pobierane są kolejne wiersze tabeli B, dla których wyliczana jest ta sama funkcja haszująca w celu dopasowania do odpowiedniego kubełka (tabeli A) 3. Dane tabeli A i B są łączone wewnątrz kubełków w celu podania wyniku Co nam daje takie podejście? - Mniej porównań podczas łączenia!!! (i większe zużycie procesora)

Łączenietabel Łączenie tabel za pomocą operatora Merge Join można porównać do działania algorytmu sortowania przez scalanie: 0. Obie tabele muszą być posortowane!!!! 1. Pobieramy pierwszy wiersz z tabeli A i porównujemy go z pierwszym wierszem tabeli B 2. Jeżeli porównywalne wartość jest równa, to brane wiersz jest dodawany do wyniku 3. Jeżeli wartości są różne, to wartość mniejsza jest odrzucana na rzecz kolejnego wiersza danej tabeli Główna zaleta: liniowa złożoność obliczeniowa

Grupowanie i sortowanie wartości Grupowanie w SQL Server może nastąpić na dwa sposoby: 1. Za pomocą operacji Stream Aggregate, która polega na zgrupowaniu wcześniej posortowanych wartości 2. Z użyciem funkcji haszującej ( Hash Match ), która grupuje dane do odpowiednich kubełków, a następnie wyliczy agregację W momencie, gdy dysponujemy już wstępnie posortowanymi wartościami (np. pobierając dane z odpowiednio przygotowanego indeksu), to operacja Stream Aggregate jest szybsza.

Grupowanie i sortowanie wartości Sortowanie danych może się odbywać w sposób jawny, lub też ukryty przed programistą: 1. Sposób jawny polega na użyciu specjalnego operatora Sort, który poukłada rekordy według zadanych kryteriów 2. Sposób niejawny to po prostu przeczytanie danych z indeksu, który ma logiczny porządek zgodny z naszymi wymaganiami Zadanie: Czy instrukcja typu SELECT * FROM tabela zwróci rekordy ułożone w określonym porządku? (np. posortowane wg. klucza głównego tabeli) Bazując na planach zapytań można poznać odpowiedź

Podsumowanie Graficzne plany wykonania są doskonałym narzędziem pozwalającym na badanie problemów wydajnościowych kodu SQL Analizując plany zapytań zwróćmy uwagę na to, czy nie czytamy zbyt dużej ilości niepotrzebnych danych Każdy z fizycznych operatorów łączenia tabel jest OK, pod warunkiem, że korzystamy z niego w odpowiednich sytuacjach Operacje grupowania i sortowania potrafią bazować na wstępnym przygotowaniu rekordów