Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w...
Transcript of Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w...
![Page 2: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/2.jpg)
Plan wykładu 5.
• Optymalizacja baz danych
• Struktura fizyczna systemu MS SQL Server
• Plan wykonania w MS SQL Server
• Optymalizacja zapytań
2
![Page 3: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/3.jpg)
OPTYMALIZACJA BAZ DANYCH
Na przykładzie MS SQL Server
![Page 4: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/4.jpg)
• Problem C10k
• Optymalizacja serwerów: WWW, BD, …
• Zwiększenie przepustowości łącza
internetowego
• Optymalizacji BD: normalizacja,
denormalizacja, zastosowanie indeksów,
procedury składowane i inne
Optymalizacja IBD - wprowadzenie
4
![Page 5: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/5.jpg)
Tuning serwera
Blokady
Indeksy
Optymalizacja zapytań
Projekt i struktura bazy danych
Piramida optymalizacyjna
Kole
jność
realizacji
Skala możliwych do uzyskania efektów 5
![Page 6: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/6.jpg)
• Projekt struktury bazy danych – Najważniejsze zadanie w procesie optymalizacji
– Skutek złego projektu trudno poprawić
– Warstwa abstrakcji danych
• Optymalizacja zapytań
• Indeksy
• Blokady – Baza danych działa prawidłowo z jednym
użytkownikiem a przy kilku zaczyna „spowalniać”
• Tuning serwera – Dodawanie procesorów, zwiększanie pamięci RAM,
zmiana dysków twardych itd.
Model optymalizacji wydajności
6
![Page 7: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/7.jpg)
• Po co optymalizować?
• Architektura fizyczna SQL Servera
• Indeksy
– Zgrupowane
– Niezgrupowane
– Pokrywające
• Plany wykonania zapytań
Kwestie związane z optymalizacją
7
![Page 8: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/8.jpg)
STRUKTURA FIZYCZNA SYSTEMU
MS SQL SERVER
![Page 9: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/9.jpg)
• Tabele
• Widoki
• Procedury składowane
• Wyzwalacze
• …
Logiczna architektura bazy danych
9
![Page 10: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/10.jpg)
Podział bazy danych MS SQL Server
na pliki, ekstenty i strony
źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm 10
![Page 11: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/11.jpg)
• data – wszystkie dane z wyjątkiem
atrybutów typów LOB (ang. Large OBject)
• index – wpisy indeksów
• text/image – typy LOB: text, ntext, image,
varchar(max), nvarchar(max),
varbinary(max), xml
• GAM (Global Allocation Map), SGAM
(Shered GAM), IAM (Index Allocation Map)
– bitowe mapy alokacji
Rodzaje stron
11
![Page 12: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/12.jpg)
Struktura strony danych
Nagłówek strony
96 bajtów
Wiersze danych
Tablica przesunięć
wierszy 12
![Page 13: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/13.jpg)
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 31
Wiersz 62
Wiersz 13
…
Sterta (ang. heap)
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 51
Wiersz 32
Wiersz 73
…
• Zbiór obszarów zawierających dane z jednej tabeli (lub
partycji)
• Dane nie są ze sobą powiązane
• Wyszukiwanie wymaga przejrzenia wszystkich stron
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 4
Wiersz 74
Wiersz 60
…
13
![Page 14: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/14.jpg)
• Strony GAM, SGAM informują, które obszary są wolne, zajęte – GAM – informacje o zajętych obszarach
jednolitych (uniform)
– SGAM – informacje o zajętych obszarach mieszanych (mixed)
• Strony IAM – informacje o przynależności obszarów do obiektów
Fizyczna organizacja danych w SQL Server
IAM
14
![Page 15: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/15.jpg)
B-drzewo
• Drzewo zbalansowane
• Węzły mogą mieć strukturę listy dwukierunkowej
• W praktyce do 5 poziomów
15
![Page 16: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/16.jpg)
• ang. clustered index
• Struktura drzewa (B-tree)
• Na poziomie korzeni i gałęzi – strony indeksu
• Na poziomie liści – strony z danymi z tabel
• Fizycznie porządkuje dane
• Dane fizyczne uporządkowane rosnące wg klucza indeksu
• Może istnieć tylko 1 indeks zgrupowany
• Zakładany najczęściej na sztucznym kluczy podstawowym tzw. id
Indeks zgrupowany (z danymi)
16
![Page 17: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/17.jpg)
Indeks zgrupowany
Klucz 1
Klucz 2
Klucz 3
…
Poprzednia Następna
Klucz 4
Klucz 5
Klucz 6
…
P N
Wiersz danych 1
Wiersz danych 2
Wiersz danych 3
…
P N
Klucz 7
Klucz 8
Klucz 9
…
P N
Klucz 10
Klucz 11
Klucz 12
…
P N
Wiersz danych 7
Wiersz danych 8
Wiersz danych 9
…
P N
Wiersz danych 4
Wiersz danych 5
Wiersz danych 6
…
P N
Wiersz danych 10
Wiersz danych 11
Wiersz danych 12
… 17
![Page 18: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/18.jpg)
• Mała długość atrybutu (klucza)
• Wysoka selektywność (mało
powtarzających się wartości klucza
indeksu)
• Rzadko bądź wcale nie zmieniane wartości
• Wartości klucza dla kolejno dodawanych
wierszy są rosnące
Na jakich kolumnach tworzyć indeks
zgrupowany?
18
![Page 19: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/19.jpg)
• Struktura drzewa (B-tree)
• Na wszystkich poziomach drzewa mamy strony
indeksu
• Może być budowany na stercie lub na indeksie
zgrupowanym
• Można stworzyć do 248 indeksów
niezgrupowanych na tabeli
• Stosowane są, gdy dane wyszukiwane są według
wielu kryteriów
• Maksymalnie 16 kolumn w kluczu
Indeks niezgrupowany
19
![Page 20: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/20.jpg)
Indeksy niezgrupowany budowany na
indeksie zgrupowanym
• Indeks niezgrupowany
• Indeks zgrupowany
20 źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm
B-drzewo
![Page 21: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/21.jpg)
PLAN WYKONANIA W MS SQL
SERVER
![Page 22: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/22.jpg)
• MS SQL Server Management Studio
– Plan wykonania
• Database Engine Tuning Advisor
Narzędzia wspierające optymalizację
22
![Page 23: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/23.jpg)
Kwestie wydajnościowe
• Fizyczna organizacja danych wpływa na
wydajność pracy BD
• Plan wykonania (ang. query plan)
23
![Page 24: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/24.jpg)
• T-SQL jest językiem deklaratywnym.
• Używając go, stwierdzamy co chcemy
zrobić, a nie jak to zrobić.
• System zarządzania bazą danych
posługując się optymalizatorem zapytań
decyduje o sposobie wykonania zapytania.
Rola optymalizatora zapytań
24
![Page 25: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/25.jpg)
Fazy przetwarzania zapytania
Dekompozycja zapytania
Optymalizacja zapytania
Generacja kodu
Wykonanie zapytania
zapytanie SQL
wynik zapytania
wyrażenie algebry relacji
plan wykonania zapytania
kod zapytania
25
![Page 26: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/26.jpg)
• Estymowany plan wykonania (ang.
estimated execution plan)
• Rzeczywisty plan wykonania (ang. actual
execution plan)
Plan wykonania MS SQL Server
26
![Page 27: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/27.jpg)
• Dostarcza możliwość reprezentacji graficznej
planów zapytań w postaci drzewa operatorów
• Podpowiada kroki warte podjęcia celem
optymalizacji zapytań (np. wykrywa brakujące
indeksy)
Graficzny plan wykonania w SQL Server
Management Studio
27
![Page 28: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/28.jpg)
Ikona Element języka/Operator (ang.)
Wynik Result
Skanowanie indeksu
zgrupowanego
Clustered Index Scan
Szukanie indeksu
zgrupowanego
Clustered Index Seek
Skanowanie indeksu zwykłego Nonclustered Index Scan
Szukanie indeksu zwykłego Nonclustered Index Seek
Pętla zagnieżdżona Nested Loops
Wyszukiwanie zakładki Bookmark Lookup
Sortowanie Sort
Dopasowanie wartości
mieszającej
Hash Match
Ikony planu wykonania (wybór)
28
![Page 29: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/29.jpg)
Ikona Element języka/Operator (ang.)
Obliczanie wartość skalarna Compute Scalar
Top Top
Filtruj Filtr
Obliczanie wartość skalarnej Compute Scalar
Agregat strumienia Stream Aggregate
(…)
Ikony planu wykonania (cd.)
29
![Page 30: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/30.jpg)
Interpretacja planu wykonania
30
![Page 31: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/31.jpg)
Okno podpowiedzi
z informacjami o operatorze
31
![Page 32: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/32.jpg)
Przykład z BD AdventureWorks2008
32
![Page 33: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/33.jpg)
Indeksy w tabeli Person.Person
33
![Page 34: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/34.jpg)
34
![Page 35: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/35.jpg)
35
![Page 36: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/36.jpg)
SELECT *
FROM BazaRelacyjna.dbo.Klienci k
WHERE k.IdMiasta IN
(SELECT [IdMiasta]
FROM [BazaRelacyjna].[dbo].[Miasta] m
WHERE IdWojewodztwa=12)
GO
SELECT *
FROM BazaRelacyjna.dbo.Klienci k
JOIN [BazaRelacyjna].[dbo].[Miasta] m
ON k.IdMiasta=m.IdMiasta
AND m.IdWojewodztwa=12
GO
Dwie wersje zapytania SQL
36
![Page 37: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/37.jpg)
Uzyskane plany wykonania
37
![Page 38: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/38.jpg)
OPTYMALIZACJA ZAPYTAŃ SQL
38
![Page 39: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/39.jpg)
źródło:
http://www.bazy-danych.info/sql/optymalizacja-zapytan.htm
Optymalizacja zapytań SQL i bazy danych –
11 przykazań
39
![Page 40: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/40.jpg)
1. Nie używaj operatora NOT IN – być może składnia jest nieco mniej
intuicyjna, aczkolwiek zdecydowanie wydajniejsza jest klauzula
NOT EXISTS.
2. Nie używaj operatorów nierówności: ‘<>’, ‘=!’. O wiele korzystniej
i wydajniej jest włączyć nawet dużą listę niż wykluczyć z zapytania
pojedyncze rekordy.
3. Nie używaj klauzul IS (NOT) NULL. Wartości NULL często powodują
problemy w obsłudze wektora wyników (np. w aplikacjach
klienckich), wymagają użycia dodatkowych funkcji do obsługi itp.
Najlepiej jest zamieniać puste wartości na konkretny znak lub
liczbę i w tej postaci przechowywać je w bazie danych.
4. Unikaj zapytań z użyciem DISTINCT. Lepiej i wydajniej jest użyć
GROUP BY.
5. Poprzedzaj nazwę tabeli właścicielem tabeli w części FROM
zapytania. Unikniesz dzięki temu dwuznaczności i kłopotów.
40
![Page 41: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/41.jpg)
6. W poleceniach INSERT zawsze jawnie wymieniaj listę kolumn.
W przeciwnym wypadku każda zmiana struktury tabeli będzie generować
błędy
7. Funkcja COUNT - w każdym wypadku lepiej będzie użyć COUNT(1) niż
COUNT(*)
8. Przy łączeniu wielu tabel zwróć uwagę na kolejność występowania
złączeń. Zawsze najkorzystniej będzie ograniczyć jak największą ilość
wierszy w pierwszym złączeniu.
9. Zawsze przed wykonaniem SQL przyjrzyj się planowi wykonania
zapytania (EXPLAIN PLAN).
10.Nie używaj funkcji SQL w części WHERE zapytania. Rozważ dodanie
kolumny z wartością wynikową działania funkcji, a jeżeli użycie funkcji
jest niezbędne, to korzystaj z indeksów bazujących na funkcjach
(function-based indexes).
11.Staraj się też nie używać symboli wieloznacznych na początku szukanego
słowa klauzuli WHERE w wyrażeniu LIKE. Czyli dużo wydajniejsze będzie
wyszukiwanie nazwisko LIKE ‘K%owalski’ niż nazwisko LIKE ‘%owalski’,
nawet jeżeli na tym polu jest założony jakiś indeks, to nie zostanie on
wykorzystany poprawnie. 41
![Page 42: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/42.jpg)
• Nawet najlepsza struktura bazy danych nie gwarantuje
wysokiej wydajności jej działania
• Należy odpowiednio zaprojektować bazę danych, dobrać
postać zapytań i użyć adekwatnie zaprojektowanych
indeksów aby osiągnąć wysoką wydajność
• Aby móc zając się optymalizacją zapytań trzeba
zrozumieć w jaki sposób SQL Server przechowuje dane i
jakie są tego konsekwencje
• Trzeba również zapoznać się ze sposobami realizacji
zapytań, dostępnymi operacjami i specyfiką ich działania
• Rola doświadczenia w nabywaniu umiejętności w
zakresie optymalizacji
Optymalizacja – podsumowanie
42
![Page 43: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/43.jpg)
PRZEGLĄD
![Page 44: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/44.jpg)
Internetowe bazy danych (1)
• Przykłady serwisów internetowych
• Wybór technologii oraz architektury
• Języki programowania
• Serwery baz danych
• Technologie udostępniania informacji
– HTML, ISAPI, CGI, ASP, PHP, JSP, XML
• Technologie dostępu do danych
– ODBC, JDBC, OLE DB, DAO, ADO/.NET, ORM
44
![Page 45: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/45.jpg)
Internetowe bazy danych (2)
• E-commerce
• Bezpieczeństwo i zagrożenia
• Ataki bazodanowe
• Umiejscowienie bazy danych
w architekturze sieci firmowej
• Składowanie, archiwizacja i ochrona
danych
45
![Page 46: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/46.jpg)
Internetowe bazy danych (3)
• Uwierzytelnienie, autoryzacja
• Uwierzytelnienie i bezpieczeństwo w
kontekście PHP i baz danych
• Szyfrowanie danych
• Bezpieczeństwo transakcji – podpis
cyfrowy, SSL
46
![Page 47: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/47.jpg)
Internetowe bazy danych (4)
• Języki skryptowe: PHP, Python, Ruby
• Frameworki
• Mapowanie obiektowo-relacyjne
47
![Page 48: Internetowe Bazy Danychroman.ptak.staff.iiar.pwr.wroc.pl/IBD_wyklad_2016_nr5.pdf · zrozumieć w jaki sposób SQL Server przechowuje dane i jakie są tego konsekwencje • Trzeba](https://reader034.fdocuments.net/reader034/viewer/2022042416/5f317b8170cb61555e0a9c3e/html5/thumbnails/48.jpg)
DZIĘKUJĘ ZA UWAGĘ
Pytania?