Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób...

30

Transcript of Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób...

Page 1: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne
Page 2: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Michał Mrowiec

Projekt okładki: Studio Gravite / OlsztynObarek, Pokoński, Pazdrijowski, Zaprucki

Fotografia na okładce została wykorzystana za zgodą Shutterstock.com

Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/pksql3Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Kody źródłowe wybranych przykładów dostępne są pod adresem:ftp://ftp.helion.pl/przyklady/pksql3.zip

ISBN: 978-83-246-9495-2

Copyright © Helion 2015

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Spis tre ciWst p .............................................................................................. 9Serwery bazodanowe ...................................................................................................... 10O ksi ce ........................................................................................................................ 10SQL Server firmy Microsoft ........................................................................................... 11

Instalacja .................................................................................................................. 12Przyk adowa baza danych ........................................................................................ 16

Konwencje i oznaczenia ................................................................................................. 17

Cz I Troch teorii, czyli modele i standardy .......................... 19

Rozdzia 1. Relacyjny model baz danych ........................................................... 21Tabele jako zbiory danych .............................................................................................. 21

Kolumny maj niepowtarzalne nazwy i zawieraj okre lone typy danych ............... 22Wiersze powinny by unikatowe .............................................................................. 23Kolejno kolumn jest bez znaczenia ....................................................................... 23Kolejno wierszy jest bez znaczenia ....................................................................... 24

Bazy danych ................................................................................................................... 24Trzy modele baz danych: relacyjny, obiektowy i jednorodny ........................................ 24

Model jednorodny .................................................................................................... 25Model relacyjny ....................................................................................................... 25Model obiektowy ..................................................................................................... 29

Za o enia relacyjnego modelu baz danych ..................................................................... 30Postulaty Codda dotycz ce struktury danych ........................................................... 31Postulaty Codda dotycz ce przetwarzania danych ................................................... 31Postulaty Codda dotycz ce integralno ci danych ..................................................... 32Normalizacja ............................................................................................................ 32

Podsumowanie ................................................................................................................ 35Zadania ........................................................................................................................... 36

Rozdzia 2. Standardy j zyka SQL ..................................................................... 37Strukturalny j zyk zapyta ............................................................................................. 37

Przetwarzanie zbiorów a przetwarzanie pojedynczych danych ................................ 38J zyk strukturalny a j zyk proceduralny .................................................................. 39J zyk interpretowany a j zyk kompilowany ............................................................. 39Sk adnia j zyka SQL ................................................................................................ 41Dialekty j zyka SQL ................................................................................................ 43

Poleć książkęKup książkę

Page 4: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

4 Praktyczny kurs SQL

Standardy ANSI .............................................................................................................. 44Historia ........................................................................................................................... 44

SQL3 ........................................................................................................................ 46Podsumowanie ................................................................................................................ 50Zadania ........................................................................................................................... 50

Cz II Pobieranie danych, czyli instrukcja SELECT ................... 51

Rozdzia 3. Odczytywanie danych z wybranej tabeli ........................................... 53Klauzula FROM ............................................................................................................. 53

W pe ni kwalifikowane nazwy obiektów ................................................................. 54Wybieranie kolumn ........................................................................................................ 55Eliminowanie duplikatów ............................................................................................... 57Wyra enia ....................................................................................................................... 58

Operatory arytmetyczne ........................................................................................... 59czenie danych tekstowych .................................................................................... 60

Funkcje systemowe .................................................................................................. 60Formatowanie wyników ................................................................................................. 64

Aliasy ....................................................................................................................... 64Sta e (litera y) ........................................................................................................... 65

Sortowanie wyników ...................................................................................................... 66Sortowanie danych tekstowych ................................................................................ 69

Podsumowanie ................................................................................................................ 70Zadania ........................................................................................................................... 70

Rozdzia 4. Wybieranie wierszy ......................................................................... 73Logika trójwarto ciowa .................................................................................................. 73

Warto NULL ......................................................................................................... 74Operatory logiczne ................................................................................................... 74

Klauzula WHERE .......................................................................................................... 76Standardowe operatory porównania ......................................................................... 77Operatory SQL ......................................................................................................... 78Z o one warunki logiczne ........................................................................................ 82

Klauzula TOP ................................................................................................................. 85Stronicowanie wierszy .................................................................................................... 87Podsumowanie ................................................................................................................ 88Zadania ........................................................................................................................... 89

Rozdzia 5. czenie tabel i wyników zapyta ................................................... 91Z czenia naturalne i nienaturalne .................................................................................. 91

Klucze obce .............................................................................................................. 92Aliasy ....................................................................................................................... 95

Z czenia równo ciowe i nierówno ciowe ..................................................................... 96Z czenia zewn trzne ..................................................................................................... 98

Z czenie lewostronne .............................................................................................. 99Z czenie prawostronne ............................................................................................ 99Z czenie obustronne ................................................................................................ 99

Z czenie krzy owe (iloczyn kartezja ski) ................................................................... 100Z czenia wielokrotne ................................................................................................... 102

Okre lanie kolejno ci z cze ................................................................................ 104Z czenie tabeli z ni sam ........................................................................................... 106

Eliminacja duplikatów ............................................................................................ 107Klucze obce w obr bie jednej tabeli ....................................................................... 108

Poleć książkęKup książkę

Page 5: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Spis tre ci 5

czenie wyników zapyta ........................................................................................... 109Suma ....................................................................................................................... 109Cz wspólna ........................................................................................................ 112Ró nica ................................................................................................................... 112

czenie wierszy i wyników funkcji tabelarycznych ................................................... 113Operator APPLY .................................................................................................... 115

Podsumowanie .............................................................................................................. 116Zadania ......................................................................................................................... 117

Rozdzia 6. Grupowanie wierszy ...................................................................... 119Funkcje grupuj ce ........................................................................................................ 119

Funkcja COUNT() .................................................................................................. 120Funkcje SUM() i AVG() ........................................................................................ 121Funkcje MIN() i MAX() ......................................................................................... 122Inne funkcje grupuj ce ........................................................................................... 123Wyra enia .............................................................................................................. 124

Klauzula GROUP BY ................................................................................................... 125Kolejno wykonywania klauzuli GROUP BY ...................................................... 128Operatory CUBE i ROLLUP .................................................................................. 129Operator GROUPING SETS .................................................................................. 132

Operatory PIVOT i UNPIVOT ..................................................................................... 134PIVOT .................................................................................................................... 134UNPIVOT .............................................................................................................. 137

Klauzula HAVING ....................................................................................................... 138Podsumowanie .............................................................................................................. 141Zadania ......................................................................................................................... 141

Rozdzia 7. Partycjonowanie wierszy oraz funkcje rankingu,analityczne i okienkowe ............................................................... 143Partycjonowanie ........................................................................................................... 143Klauzula OVER ............................................................................................................ 144

Partycjonowanie danych ......................................................................................... 147Porz dkowanie danych ........................................................................................... 149

Funkcje rankingu .......................................................................................................... 149Okienka ........................................................................................................................ 151Funkcje okienkowe ....................................................................................................... 154Funkcje analityczne ...................................................................................................... 156Podsumowanie .............................................................................................................. 158Zadania ......................................................................................................................... 158

Rozdzia 8. Podzapytania ............................................................................... 161Czym s podzapytania? ................................................................................................ 161Podzapytania jako zmienne .......................................................................................... 162

Podzapytania niepowi zane .................................................................................... 162Podzapytania powi zane ........................................................................................ 168

Podzapytania jako ród a danych ................................................................................. 173Tabele pochodne .................................................................................................... 174CTE ........................................................................................................................ 176Wyznaczanie trendów ............................................................................................ 182

Operatory ...................................................................................................................... 185Operator EXISTS ................................................................................................... 186Operator ANY lub SOME ...................................................................................... 189Operator ALL ......................................................................................................... 193

Podsumowanie .............................................................................................................. 195Zadania ......................................................................................................................... 195

Poleć książkęKup książkę

Page 6: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

6 Praktyczny kurs SQL

Rozdzia 9. Wydajno zapyta ....................................................................... 197Wykonywanie zapyta przez serwery bazodanowe ...................................................... 197Kolejno wykonywania klauzul zapytania .................................................................. 198Plany wykonania zapyta ............................................................................................. 199Wydajne wyszukiwanie danych za pomoc argumentów SARG ................................. 203Poprawa wydajno ci z cze ........................................................................................ 207Wydajne grupowanie i partycjonowanie danych .......................................................... 208Podsumowanie .............................................................................................................. 209Zadania ......................................................................................................................... 209

Cz III Modyfikowanie danych, czyli instrukcje INSERT,UPDATE, DELETE oraz MERGE .................................... 211

Rozdzia 10. Modyfikowanie danych ................................................................. 213Wstawianie danych ....................................................................................................... 213

Klucze podstawowe ................................................................................................ 214Warto ci domy lne ................................................................................................. 215Warto NULL ....................................................................................................... 216Konstruktor wierszy ............................................................................................... 217Wstawianie wyników zapyta ................................................................................ 218

Usuwanie danych .......................................................................................................... 221Instrukcja DELETE ................................................................................................ 221Instrukcja TRUNCATE TABLE ............................................................................ 223

Aktualizowanie danych ................................................................................................ 224Jednoczesne aktualizowanie wielu kolumn ............................................................ 224Wyra enia .............................................................................................................. 225Aktualizowanie danych wybranych na podstawie danych z innych tabel .............. 226Aktualizowanie danych za pomoc wyra e odwo uj cych si do innych tabel .... 227

Instrukcja MERGE ....................................................................................................... 227Podsumowanie .............................................................................................................. 229Zadania ......................................................................................................................... 230

Rozdzia 11. Transakcje i wspó bie no .......................................................... 231W a ciwo ci transakcji ................................................................................................. 231Transakcyjne przetwarzanie danych ............................................................................. 233

Tryb jawnego zatwierdzania transakcji .................................................................. 234Rozpoczynanie transakcji ....................................................................................... 234Wycofywanie transakcji ......................................................................................... 236Zatwierdzanie transakcji ......................................................................................... 237Zagnie d anie transakcji ........................................................................................ 237Punkty przywracania .............................................................................................. 238

Wspó bie no .............................................................................................................. 239Blokady .................................................................................................................. 239Zakleszczenia ......................................................................................................... 240Poziomy izolowania transakcji ............................................................................... 241Model optymistyczny ............................................................................................. 246Model pesymistyczny ............................................................................................. 247

Podsumowanie .............................................................................................................. 248Zadania ......................................................................................................................... 248

Poleć książkęKup książkę

Page 7: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Spis tre ci 7

Cz IV Tworzenie baz danych,czyli instrukcje CREATE, ALTER i DROP ...................... 249

Rozdzia 12. Bazy danych i tabele .................................................................... 251Tworzenie i usuwanie baz danych ................................................................................ 251Tworzenie i usuwanie tabel .......................................................................................... 254

Schematy ................................................................................................................ 255Zmiana struktury tabeli ................................................................................................. 256Ograniczenia ................................................................................................................. 256

NOT NULL ............................................................................................................ 257Klucz podstawowy ................................................................................................. 257Niepowtarzalno ................................................................................................... 259Warto domy lna .................................................................................................. 260Warunek logiczny .................................................................................................. 260Klucz obcy ............................................................................................................. 261Ograniczenia a wydajno instrukcji modyfikuj cych i odczytuj cych dane ......... 264

Podsumowanie .............................................................................................................. 265Zadania ......................................................................................................................... 266

Rozdzia 13. Widoki i indeksy ........................................................................... 267Widoki .......................................................................................................................... 267

Tworzenie i usuwanie widoków ............................................................................. 267Modyfikowanie widoków ....................................................................................... 270Korzystanie z widoków .......................................................................................... 270Zalety widoków ...................................................................................................... 275

Indeksy ......................................................................................................................... 276Tworzenie, modyfikowanie i usuwanie indeksów .................................................. 278Porz dkowanie indeksów ....................................................................................... 281

Podsumowanie .............................................................................................................. 281Zadania ......................................................................................................................... 282

Cz V Uprawnienia u ytkowników,czyli instrukcje GRANT i REVOKE ................................ 283

Rozdzia 14. Nadawanie i odbieranie uprawnie ................................................ 285Konta u ytkowników .................................................................................................... 285

Zak adanie i usuwanie kont u ytkowników ............................................................ 286Role .............................................................................................................................. 287

Tworzenie i usuwanie ról ....................................................................................... 287Przypisywanie ról do u ytkowników ..................................................................... 287Specjalna rola Public .............................................................................................. 288

Uprawnienia ................................................................................................................. 288Nadawanie i odbieranie uprawnie ........................................................................ 289Dziedziczenie uprawnie ....................................................................................... 290Przekazywanie uprawnie ...................................................................................... 292Zasada minimalnych uprawnie ............................................................................. 293

Podsumowanie .............................................................................................................. 293Zadania ......................................................................................................................... 294

Dodatki

Dodatek A Rozwi zania zada ....................................................................... 297

Skorowidz .................................................................................... 333

Poleć książkęKup książkę

Page 8: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

8 Praktyczny kurs SQL

Poleć książkęKup książkę

Page 9: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9.

Wydajno zapyta

W jaki sposób serwery bazodanowe wykonuj zapytania?

W jakiej kolejno ci wykonywane s poszczególne klauzule zapyta ?

Czym jest plan wykonania zapytania i jak go odczyta ?

Co oznacza akronim SARG?

Jakie indeksy s przydatne do wyszukiwania wierszy?

Co to znaczy, e indeks zawiera jakie zapytanie?

Które kolumny powinny by poindeksowane w celu poprawy wydajno ciz cze ?

Jak poprawi wydajno zapyta grupuj cych lub partycjonuj cych wiersze?

Co oznacza akronim POC?

Wykonywanie zapytaprzez serwery bazodanowe

Chocia szczegó y sposobów, w jakie poszczególne serwery bazodanowe wykonujzapytania, s ró ne, g ówne etapy tego procesu wygl daj podobnie. Poniewa pod-stawowa wiedza na ten temat jest niezb dna do pisania wydajnych zapyta , poni ejprzedstawione zosta y poszczególne operacje wykonywane przez SQL Server:

1. Aplikacja kliencka czy si z serwerem bazodanowym. Po udanym po czeniunawi zana zostaje dwukierunkowa sesja, w ramach której odbywa si b dziekomunikacja pomi dzy serwerem a klientem.

2. Klient wysy a do serwera instrukcj j zyka SQL.

Poleć książkęKup książkę

Page 10: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

198 Cz II Pobieranie danych,czyli instrukcja SELECT

3. Instrukcja ta zostaje odebrana, a nast pnie serwer bazodanowy musi opracowaplan jej wykonania. Przeprowadzana w tym celu optymalizacja jest bardzoskomplikowanym i zale nym od danego serwera (a nawet od jego wersji)procesem, którego omówienie wykracza poza zakres tej ksi ki. Powinienejednak wiedzie , e optymalizacja jest bardzo czasoch onnym, silnie obci aj cymprocesor i wymagaj cym du ej ilo ci pami ci procesem, a wi c wiele serwerówbazodanowych przechowuje w pami ci raz zoptymalizowane plany wykonaniazapyta w celu ich ponownego u ycia.

4. Dysponuj c znalezionym planem wykonania, serwer bazodanowy mo eprzyst pi do wykonywania instrukcji. Prawie zawsze wi e si toz konieczno ci odczytania pewnych danych.

5. Serwery bazodanowe przechowuj dane w specjalnych jednostkach,w przypadku serwera SQL s to o miokilobajtowe strony. Strony s tejednostkami odczytu i zapisu danych, a wi c serwer zapisuje oraz odczytujejedn lub wi cej stron, a nie poszczególne wiersze czy ca e tabele. Do wykonaniaodebranej od klienta instrukcji serwer b dzie wi c musia odczyta zawieraj ceniezb dne do wykonania zapytania strony.

6. Je eli strony te znajdowa y si ju w buforze (pami ci RAM), wykonanazostanie operacja logicznego odczytu. W przeciwnym wypadku stronyzostan wczytane z dysku do bufora — taki odczyt nazywany jest odczytemfizycznym. Poniewa pami jest znacznie szybsza od dysków, fizyczneodczyty s bardzo ma o wydajne1. W zwi zku z tym, eby zapewni jaknajwy sz wydajno , nale y zminimalizowa liczb fizycznych odczytówpoprzez wyposa enie serwera w odpowiedni (wystarczaj c do zbuforowaniawszystkich danych) ilo pami ci RAM.

7. Wynik wykonania instrukcji j zyka SQL (w przypadku zapytania b dzie to zbiórwierszy) jest wysy any do aplikacji klienckiej.

Kolejno wykonywaniaklauzul zapytania

Chocia serwery bazodanowe optymalizuj zapytania przed ich wykonaniem, procesten nie mo e mie wp ywu na wynik zapytania (wykonanie zapytania wed ug ró nychplanów, np. poprzez z czenie tabel w ró nej kolejno ci albo poprzez pogrupowaniewierszy, a nast pnie z czenie otrzymanych w ten sposób grup czy te z czenie tabel,a nast pnie pogrupowanie wierszy, musi zawsze skutkowa zwróceniem tego samegowyniku).

Poszczególne klauzule instrukcji SELECT s wykonywane zawsze w tej samej kolejno ci.Je eli która z opcjonalnych klauzul nie wyst puje, dany krok jest po prostu pomijany.

1 Automatyczne buforowanie danych jest powodem, dla którego ponowne wykonanie tego samego

zapytania mo e by znacznie szybsze.

Poleć książkęKup książkę

Page 11: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 199

Rezultatem wykonania ka dego kroku jest zbiór po redni — wirtualna tabela, któranie jest dost pna dla u ytkownika. Kolejny krok jest wykonywany tylko w oparciuo zbiór po redni b d cy rezultatem wykonania poprzedniego kroku, a zbiór po redni,rezultat wykonania ostatniego kroku, jest zwracany u ytkownikowi.

Tak wi c chocia faktyczny sposób, w jaki serwer bazodanowy wykona nasze zapy-tanie, mo e by (i najcz ciej b dzie) inny ni przedstawiona poni ej ogólna kolej-no wykonywania zapyta , warto zna t logiczn kolejno wykonywania poszcze-gólnych klauzul.

W przypadku zapyta niegrupuj cych danych ich klauzule wykonywane s w nast -puj cej kolejno ci:

1. Najpierw serwer musi pobra potrzebne do wykonania zapytania dane, a wi cwykona klauzul FROM oraz, je eli istniej , klauzule JOIN i operatory APPLY.

2. Nast pnie wybrane zostan wiersze spe niaj ce warunki klauzuli WHERE.

3. Dla otrzymanych w wyniku wykonania dwóch poprzednich punktów wierszywykonane zostan wyra enia zdefiniowane w klauzuli SELECT.

4. Na ko cu otrzymane wiersze zostan posortowane, o ile w zapytaniuwyst pi a klauzula ORDER BY.

Wykonanie zapytania grupuj cego wymaga wykonania dodatkowych operacji:

1. Punkty pierwszy i drugi s wykonywane w taki sam sposób jak dla zapytaniegrupuj cych.

2. Przed wykonaniem klauzuli SELECT wiersze kandyduj ce s grupowane(wykonywana jest klauzula GROUP BY).

3. Otrzymane w wyniku grupowania wiersze s filtrowane, o ile w zapytaniuwyst pi a klauzula HAVING.

4. Dla otrzymanych w wyniku wykonania poprzednich punktów wierszy wykonanezostan wyra enia zdefiniowane w klauzuli SELECT.

5. Na ko cu otrzymane wiersze zostan posortowane, o ile w zapytaniu wyst pi aklauzula ORDER BY.

Plany wykonania zapytaUmiej tno czytania i analizowania planów wykonania zapyta jest niezb dna ka -demu, kto chce pisa nie tylko poprawne (zwracaj ce w a ciwe wyniki), ale równiewydajne (zwracaj ce te wyniki w najszybszy mo liwy sposób) zapytania. Wynika toz faktu, e to samo zapytanie mo e by wykonane na bardzo du o ró nych sposobów(liczba mo liwych sposobów wykonania tego samego zapytania zale y od samegozapytania i od serwera bazodanowego, ale nawet nieskomplikowane zapytania od-czytuj ce dane z kliku tabel mog by wykonane na kilkadziesi t, a nawet kilkaset

Poleć książkęKup książkę

Page 12: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

200 Cz II Pobieranie danych,czyli instrukcja SELECT

ró nych sposobów). Zadaniem serwera bazodanowego jest znalezienie wystarczaj codobrego sposobu (planu) wykonania zapytania. eby mu to umo liwi , powinni mynie tylko unika typowych b dów (takich jak u ywanie argumentów uniemo liwiaj -cych efektywne skorzystanie z indeksów), ale równie pisa zapytania w sposóbu atwiaj cy znalezienie optymalnych planów ich wykonania. Najprostszym sposobemsprawdzenia, czy nasze zapytanie wykonywane jest wydajnie, jest w a nie analiza planujego wykonania.

SQL Server pozwala odczytywa plany wykonania zapyta w formie tekstowej orazgraficznej. Dodatkowo mo liwe jest poznanie szacowanych oraz faktycznych planówwykonania. Poniewa szczegó owe przedstawienie kwestii analizy planów wykonaniazapyta wykracza poza zakres tej ksi ki, ograniczymy si do przedstawiania fak-tycznych planów wykonania zapyta w formie graficznej.

Zacznijmy od wyja nienia tego, czym jest plan wykonania zapytania. Plan wykonaniareprezentuje opracowan przez serwer bazodanowy strategi odczytania i przetworzeniadanych na potrzeby wykonania zapytania. Sk ada si ona z serii iteratorów, z którychka dy wykonuje pojedyncz operacj , tak jak odczytanie danych, posortowanie wier-szy, z czenie tabel itd.

Plany wykonania zapyta mo na czyta w dwóch kierunkach:

1. Od lewa do prawa — ten kierunek reprezentuje logik wykonywania zapytania;

2. Lub od prawa do lewa — ta kolejno repetuje przep yw danych pomi dzykolejnymi iteratorami.

eby wy wietli graficzny plan wykonania zapytania, nale y klikn znajduj cy si napasku zada konsoli SSMS przycisk Include Actual Execution Plan lub nacisn kombi-nacj klawiszy Ctrl+M, a nast pnie uruchomi analizowane zapytanie (rysunek 9.1).

Przyjrzyjmy si nieco bardziej rozbudowanemu planowi wykonania zapytania. Przed-stawiony na rysunku 9.2. plan wykonania nale y przeczyta nast puj co:

1. Przeskanowany zosta indeks zgrupowany (tabela [SalesLT].[Customer]).

2. Odczytanych w ten sposób 847 wierszy (umieszczaj c kursor myszki nadreprezentuj cymi przep yw danych strza kami, wy wietlimy dodatkoweinformacje na temat liczby i rozmiaru wierszy) zosta o pogrupowanych.

3. Dla ka dej grupy wyliczona zosta a funkcja COUNT.

4. Wiersze zosta y posortowane.

5. Na ko cu wiersze zosta y zwrócone do aplikacji klienckiej.

Poleć książkęKup książkę

Page 13: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 201

Rysunek 9.1. Najprostszy plan wykonania zapytania — potrzebne dane zosta y odczytane za pomociteratora Clustered Index Scan (szczegó y operacji mo emy pozna , umieszczaj c kursor myszki naddanym iteratorem), a nast pnie zwrócone do aplikacji klienckiej

Rysunek 9.2. Sk adaj cy si z pi ciu iteratorów plan wykonania zapytania grupuj cego dane

Poleć książkęKup książkę

Page 14: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

202 Cz II Pobieranie danych,czyli instrukcja SELECT

SQL Server ocenia i podaje koszt wykonania ka dej operacji — np. w poprzednimprzyk adzie koszt pogrupowania wierszy wyniós 37% kosztów wykonania ca ego za-pytania. Ta wiedza pozwala nam na wdro enie wzgl dnie prostej, a jednocze nie sku-tecznej metody optymalizacji zapyta , polegaj cej na eliminowaniu z planów wykonanianajkosztowniejszych operacji.

Co wi cej, je eli jednocze nie uruchomimy kilka zapyta (np. kilka wersji tego sa-mego zapytania), serwer SQL zwróci informacj o procentowym rozk adzie kosztówwykonania ca ego wsadu (zbiór jednocze nie wys anych do serwera zapyta nazywasi wsadem). Rysunek 9.3 ilustruje t funkcjonalno .

Rysunek 9.3. Drugie zapytanie (to z klauzul ORDER BY) okaza o si cztery razy bardziej kosztowneod pierwszego. Ró nica wynika z tego, e wykonuj c drugie zapytanie, serwer musia doda kosztownyiterator SORT

Przekonali my si w a nie, e sortowanie mo e wielokrotnie wyd u y czas wyko-nania zapytania, a wi c je eli wynik zapytania nie musi by posortowany, nie nale yumieszcza w nim klauzuli ORDER BY.

Porównajmy jeszcze koszty wykonania zapytania, w którym u yta do sortowania ko-lumna nie zosta a do czona do wyniku z zapytaniem zawieraj cym t kolumn (ry-sunek 9.4) — oka e si , e s one identyczne, a wi c niewymienienie w klauzuliSELECT kolumn u ytych do sortowania nie skraca czasu wykonania zapytania.

Poleć książkęKup książkę

Page 15: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 203

Rysunek 9.4. Chocia analiza planów wykona zapyta przez konkretny serwer bazodanowy nie jesttematem tej ksi ki, to warto wiedzie , e kolumny u yte do sortowania musz by odczytane tak samojak kolumny wymienione w klauzuli SELECT. Z tego powodu wi kszo serwerów bazodanowych wykonaoba powy sze zapytania w tym samym czasie, a koszt wykonania ka dego z nich przez serwer SQL wyniósdok adnie 50% kosztu wykonania ca ego wsadu

Wydajne wyszukiwanie danychza pomoc argumentów SARG

Dane mog by zapisane:

1. W tabelach — dla uproszczenia i zgodnie z relacyjnym modelem baz danychprzyjmijmy, e kolejno wierszy tabeli jest nieistotna, a wi c nie s one w adensposób posortowane2.

2. W indeksach — aby unikn analizowania ró nic pomi dzy poszczególnymiserwerami bazodanowymi, przyjmijmy, e indeks przypomina skorowidz ksi ki— do czan na jej ko cu, alfabetycznie uporz dkowan list hase z odno nikamido numerów stron, na których dane has o jest opisane. W przypadku baz danychodpowiednikiem has a b dzie wybrana kolumna (lub kolumny) tabeli, czylitzw. klucz indeksu, a odno nikiem wska nik3. Podsumowuj c, ka dy kluczindeksu posiada wska nik do wiersza tabeli zawieraj cego warto cipozosta ych (niekluczowych) kolumn, a klucze indeksu s zawszeposortowane.

2 Wiele serwerów bazodanowych porz dkuje wiersze tabeli wed ug warto ci klucza podstawowego.

Taka posortowana tabela nazywana jest indeksem zgrupowanym.3 Wi cej informacji na temat indeksów znajduje si w rozdziale 13.

Poleć książkęKup książkę

Page 16: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

204 Cz II Pobieranie danych,czyli instrukcja SELECT

Je eli odczytywana tabela nie jest poindeksowana, serwer bazodanowy wykonuj cdowolne odwo uj ce si do tej tabeli zapytanie, b dzie musia odczyta j w ca o ci.Tego typu sytuacja zachodzi te , gdy odczytujemy wszystkie kolumny tabeli za pomocsymbolu *. eby si o tym przekona , wystarczy porówna plany wykonania dwóch po-kazanych na rysunku 9.5 zapyta :

Rysunek 9.5. Wyszukanie w indeksie kluczy spe niaj cych warunek z klauzuli WHERE i odczytanietylko czterech wierszy tabeli okaza o si w tym przypadku trzy razy szybsze ni odczytanie ca ej tabelii wybranie czterech wierszy spe niaj cych podany warunek

Podsumujmy — tabela [SalesLT].[SalesOrderDetail] ma za o ony indeks na ko-lumnie ProductID. Indeks ten zawiera, oprócz identyfikatorów produktów, identyfi-katory zamówie . Nie zawiera natomiast pozosta ych kolumn tej tabeli. Z tego powoduwykonanie pierwszego, zwracaj cego tylko cztery wiersze, zapytania wymaga o od-czytania ca ej tabeli, podczas gdy do znalezienia odpowiednich danych w indeksiewystarczy o go przeszuka . O takich zapytaniach jak te drugie mówimy, e zawieraj sione w indeksie, poniewa wszystkie potrzebne do ich wykonania dane zapisane sw za o onym dla tabeli indeksie.

Utworzenie zawieraj cego zapytanie indeksu jest najprostszym i najskuteczniejszymsposobem na popraw wydajno ci tego zapytania. Nie oznacza to jednak, e po-winni my tworzy indeksy zawieraj ce wszystkie zapytania. Poniewa serwer bazoda-nowy automatycznie synchronizuje dane w indeksach z danymi w tabeli, liczba in-deksów zdefiniowanych dla pojedynczej tabeli nie powinna przekracza 10.

Je eli istnieje indeks zawieraj cy zapytanie, serwer bazodanowy zawsze go u yje.Zupe nie inaczej wygl da u ycie przez serwery bazodanowe indeksów podczas wyko-nywania zapyta , które si w nich nie zawieraj (rysunek 9.6).

Poleć książkęKup książkę

Page 17: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 205

Rysunek 9.6. Plan wykonania zapytania poprzez przeszukanie indeksu i pobranie brakuj cych w tymindeksie danych z tabeli

Na planie wykonania drugiego zapytania widoczny jest operator Key Lookup symboli-zuj cy odczytywanie danych z tabeli [SalesLT].[SalesOrderDetail]. Operacja ta mu-sia a by przeprowadzona, bo indeks zawiera tylko identyfikatory produktów i zamó-wie , a zapytanie mia o zwróci wszystkie dane wybranego zamówienia. Takie si ganiepo dane jest na tyle kosztowne, e je eli zapytanie zwraca wi cej ni kilka procentwierszy tabeli, serwery bazodanowe przestaj u ywa indeksów i odczytuj catabel , tak jakby u yta do wyszukiwania kolumna nie by a zindeksowana.

Wiedz c, w jaki sposób serwery bazodanowe odczytuj dane, mo emy teraz uzasad-ni uwag z jednego z poprzedniego rozdzia ów, w której napisali my, e u ywaj csymbolu *, zmuszamy serwer bazodanowy do odczytania wszystkich kolumn tabeli,co mo e wielokrotnie wyd u y czas wykonywania zapytania. Poniewa wi kszozapyta zwraca wi cej ni 1% wierszy tabeli, pos uguj c si symbolem *, powodujemy,e serwery bazodanowe nie korzystaj z istniej cych indeksów.

Skoro koszt (a wi c i czas) wykonania zapyta z u yciem indeksów jest wielokrotnieni szy ni koszt odczytania tych samych danych z tabel, powinni my tak pisa zapy-tania, eby serwery bazodanowe korzysta y z indeksów przy ich wykonywaniu.

Skrót SARG (ang. Search ARGuments) oznacza warunki wyszukiwania, czyli takiewarunki logiczne, które pozwalaj serwerom bazodanowym na wybranie w a ciwychwierszy poprzez przeszukanie indeksu, a nie odczytanie ca ej tabeli.

Poniewa u ycie indeksów mo e by bardzo kosztowne4, serwery bazodanowe, zanimsi na nie zdecyduj , szacuj koszt wykonania zapytania, u ywaj c do tego danychstatystycznych. Je eli nie b d w stanie oszacowa tego kosztu, wybior najbezpiecz-niejsze rozwi zanie, czyli odczytaj tabel .

4 Z powodu opisanej wcze niej operacji Key Lookup, polegaj cej na odczytywaniu dla ka dego klucza

indeksu odpowiadaj cego mu wiersza tabeli.

Poleć książkęKup książkę

Page 18: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

206 Cz II Pobieranie danych,czyli instrukcja SELECT

W poni szych punktach zosta y opisane przypadki, w których serwer bazodanowy mo enie mie mo liwo ci oszacowania kosztu wykonania zapytania, a wi c nie skorzystaz indeksów i czas wykonania zapyta b dzie wielokrotnie d u szy:

1. Zanegowanie warunku logicznego (u ycie operatora NOT albo operatora <>),o ile serwer bazodanowy nie potrafi automatycznie przekszta ci warunkulogicznego w równowa ny warunek pozytywny. Przyk adem takiegoprzekszta cenia mo e by zast pienie przez serwer SQL warunku NOTCustomerID >3 warunkiem CustomerID <= 3:

SELECT *FROM [SalesLT].[SalesOrderDetail]WHERE ProductID <> 999;

2. Umieszczenie nazwy kolumny w ramach dowolnego wyra enia, nawet je elito wyra enie nie zmienia wyniku testu logicznego. Z tego powodu, cho obapokazane na rysunku 9.7 zapytania zwracaj te same dane, to pierwsze zostaniewykonane czterokrotnie szybciej.

Rysunek 9.7. U ycie nazwy kolumny jako cz ci dowolnego wyra enia oznacza, e serwer bazodanowyb dzie musia odczyta ca y indeks (albo nawet ca tabel ), eby mie pewno , e zwróci wszystkiewiersze spe niaj ce tego typu warunek

3. U ycie nazwy kolumny jako argumentu dowolnej funkcji (rysunek 9.8).

4. U ycie do wyboru wierszy wzorca zaczynaj cego si od symboluwieloznacznego, np. Name LIKE N'%b'.

Przyk adowa baza danych jest bardzo ma a i powy sze zapytania odwo uj si dotabel licz cych zaledwie kilkaset wierszy ka da. Tylko dlatego ró nice w wydajno cipoprawnie napisanych (umo liwiaj cych przeszukiwanie indeksu) i nieoptymalnychzapyta s tak ma e. Tymczasem swoj prawdziw si indeksy pokazuj w przypadkudu ych, licz cych tysi ce czy miliony wierszy, tabel. Wtedy znalezienie wybranychwierszy w indeksie nadal wymaga odczytania takiej samej ilo ci danych, podczasgdy odczytanie ca ej tabeli czy indeksu mo e zaj nawet kilka minut.

Poleć książkęKup książkę

Page 19: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 207

Rysunek 9.8. Umieszczenie nazwy kolumny jako argumentu dowolnej (równie systemowej) funkcji madok adnie ten sam wp yw na u ycie indeksów co u ycie nazwy kolumny w wyra eniu

Poprawa wydajno ci z czeczenie tabel, szczególnie tych du ych (licz cych wiele wierszy i kolumn), jest

kosztown operacj — wybranie pasuj cych do warunku z czenia (warunku z klau-zuli ON) wierszy w najgorszym wypadku jest operacj o z o ono ci obliczeniowej rz duO(n2), gdzie n jest liczb wierszy. Oznacza to, e je eli koszt z czenia 100 wierszywyniós 10 000, to koszt z czenia 200 wierszy wyniesie ju 40 000, a wi c cztery razywi cej ni w przypadku dwukrotnie mniejszych tabel.

Zmniejszy ten koszt mo emy, zak adaj c indeksy na u ywanych do czenia tabelkolumnach — je eli obie u yte do z czenia kolumny s poindeksowane, z czenietabel b dzie operacj o z o ono ci obliczeniowej rz du O(n). Poniewa prawie zawszetabele s czone na podstawie pary kolumn klucz podstawowy – klucz obcy, to natych kolumnach nale y za o y indeksy.

Wi kszo serwerów bazodanowych, w tym SQL Server, automatycznie indeksujekolumny klucza podstawowego. Oznacza to, e aby poprawi wydajno z cze , wy-starczy za o y indeksy na kolumnach kluczy obcych wszystkich tabel bazy danych.

Poleć książkęKup książkę

Page 20: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

208 Cz II Pobieranie danych,czyli instrukcja SELECT

Wydajne grupowaniei partycjonowanie danych

Grupowanie, sortowanie i wyszukiwanie danych mo e by bardzo kosztowne. Najprost-szym i najskuteczniejszym sposobem na popraw wydajno ci grupowania danych, taksamo jak sortowania czy wyszukiwania na podstawie argumentów SARG, jest u ycieindeksów.

W przypadku grupowania zindeksowana powinna by ka da lub co najmniejpierwsza kolumna wymieniona w klauzuli GROUP BY. Dzi ki temu serwer bazodanowyb dzie móg odczyta odpowiednio posortowane dane, co znacznie upro ci i przyspieszyich pogrupowanie (grupowanie posortowanych danych wymaga wielokrotnie mniejczasu procesora i pami ci ni grupowanie nieposortowanych danych)5. Ponadto kluczeindeksu s z regu y znacznie mniejsze ni wiersze tabeli, a wi c zmniejszy si liczbaodczytywanych z dysku danych.

eby si o tym przekona , wykonamy dwa zapytania zwracaj ce dok adnie tak samopogrupowane i posortowane dane, za drugim razem zabraniaj c serwerowi bazoda-nowemu skorzystania z indeksu6 (rysunek 9.9).

Rysunek 9.9. Pogrupowanie danych nawet ma ej, licz cej mniej ni tysi c wierszy, tabeli bez indeksuokaza o si pi razy bardziej kosztowne ni u ycie w tym celu odpowiedniego indeksu 5 Niektóre serwery bazodanowe potrafi grupowa tylko posortowane dane. Je eli brakuje im przydatnego

indeksu, przed grupowaniem dodatkowo sortuj dane.6 Serwery bazodanowe umo liwiaj okre lenie sposobu, w jaki zapytanie ma by wykonane — s u do

tego specyficzne dla danego serwera dyrektywy optymalizatora. Dyrektywa WITH (INDEX(0)) zabraniaserwerowi SQL u ycia jakiegokolwiek indeksu.

Poleć książkęKup książkę

Page 21: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Rozdzia 9. Wydajno zapyta 209

Zapytania partycjonuj ce dane (a wi c zapytania, w których wyst puje klauzula OVER)maj wi ksze wymagania co do indeksów. W ich przypadku najlepszymi indeksamis indeksy POC (ang. Partitioning, Ordering, Covering), czyli takie, w których pierwszekolumny s kolumnami u ytymi do partycjonowania danych (w klauzuli PARTITIONBY), po nich wyst puj kolumny u yte do ustalenia porz dku wierszy (w klauzuli ORDERBY), a indeks zawiera te wszystkie pozosta e (wymienione w klauzuli SELECT) kolumny.

Podsumowanie Kolejno , w jakiej wpisuje si poszczególne klauzule zapytania, nie odpowiadakolejno ci, w której s one wykonywane przez serwery bazodanowe.

Serwery bazodanowe optymalizuj sposoby wykonania zapyta .

Sposobem na sprawdzenie, czemu dane zapytanie dzia a wolniej, ni sispodziewali my, jest sprawdzenie planu jego wykonania.

Indeksy s najprostszym i wyj tkowo skutecznym sposobem na poprawwydajno ci zapyta .

Samo istnienie indeksu nie wystarczy, eby serwer bazodanowy móg z niegoefektywnie skorzysta — zapytanie musi by poprawnie napisane, np. dowybierania wierszy powinno si u ywa argumentów typu SARG, a zapytanienie powinno odczytywa wi cej kolumn, ni jest to wymagane.

Uniwersalna strategia indeksowania polega na tworzeniu indeksówzawieraj cych zapytania, a wiec indeksów wielokolumnowych. Dla zapytagrupuj cych lub partycjonuj cych dane nale y tworzy indeksy typu POC.

Zadania 1. Poni sze zapytanie zwracaj ce nazwy produktów i kategorii dzia a zbytwolno. Jak mo na poprawi jego wydajno ?

SELECT [Name]FROM [SalesLT].[Product]UNIONSELECT [Name]FROM [SalesLT].[ProductCategory];

2. Wykonanie poni szego zapytania wymaga przeskanowania (odczytania w ca o ci)indeksu za o onego na kolumnie UnitPrice. Przepisz to zapytanie tak, ebyu ywa o argumentu typu SARG.

SELECT [SalesOrderID]FROM [SalesLT].[SalesOrderDetail]WHERE [UnitPrice]*.77 > 900;

Poleć książkęKup książkę

Page 22: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

210 Cz II Pobieranie danych,czyli instrukcja SELECT

3. Zajd optymalny indeks dla poni szego zapytania:SELECT [DueDate], [SalesOrderID], [TotalDue], LAG([TotalDue]) OVER (PARTITION BY [DueDate] ORDER BY [DueDate]) as PreviusTotalDueFROM [SalesLT].[SalesOrderHeader]ORDER BY [DueDate];

Poleć książkęKup książkę

Page 23: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Cz III

Modyfikowanie danych,czyli instrukcje INSERT,UPDATE, DELETEoraz MERGE

W porównaniu z rozbudowan sk adni instrukcji SELECT sk adnia instrukcji modyfi-kuj cych dane jest do prosta1. Jednak sposób ich wykonania mo e by skompliko-wany — serwery bazodanowe, dbaj c o spójno jednocze nie modyfikowanych przezwielu u ytkowników danych, wszystkie zmiany wykonuj w ramach transakcji.

Z dwóch nast pnych rozdzia ów ksi ki dowiesz si :

1. W jaki sposób wstawia i usuwa wiersze;

2. Jak szybko usun ca zawarto tabeli;

3. W jaki sposób modyfikowa zapisane wcze niej w tabelach dane;

4. Czym s transakcje i na czym polega transakcyjne przetwarzanie danych;

5. Co oznacza termin „wspó bie no ” i czym si ró ni optymistyczny modelwspó bie no ci od modelu pesymistycznego.

1 Modyfikacj jest ka da zmiana zapisanych w tabelach danych — zarówno wstawianie i usuwanie wierszy,

jak i aktualizowanie pól tabeli.

Poleć książkęKup książkę

Page 24: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

212 Cz III Modyfikowanie danych

Poleć książkęKup książkę

Page 25: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Spis tre ci 7

Cz IV Tworzenie baz danych,czyli instrukcje CREATE, ALTER i DROP ...................... 249

Rozdzia 12. Bazy danych i tabele .................................................................... 251Tworzenie i usuwanie baz danych ................................................................................ 251Tworzenie i usuwanie tabel .......................................................................................... 254

Schematy ................................................................................................................ 255Zmiana struktury tabeli ................................................................................................. 256Ograniczenia ................................................................................................................. 256

NOT NULL ............................................................................................................ 257Klucz podstawowy ................................................................................................. 257Niepowtarzalno ................................................................................................... 259Warto domy lna .................................................................................................. 260Warunek logiczny .................................................................................................. 260Klucz obcy ............................................................................................................. 261Ograniczenia a wydajno instrukcji modyfikuj cych i odczytuj cych dane ......... 264

Podsumowanie .............................................................................................................. 265Zadania ......................................................................................................................... 266

Rozdzia 13. Widoki i indeksy ........................................................................... 267Widoki .......................................................................................................................... 267

Tworzenie i usuwanie widoków ............................................................................. 267Modyfikowanie widoków ....................................................................................... 270Korzystanie z widoków .......................................................................................... 270Zalety widoków ...................................................................................................... 275

Indeksy ......................................................................................................................... 276Tworzenie, modyfikowanie i usuwanie indeksów .................................................. 278Porz dkowanie indeksów ....................................................................................... 281

Podsumowanie .............................................................................................................. 281Zadania ......................................................................................................................... 282

Cz V Uprawnienia u ytkowników,czyli instrukcje GRANT i REVOKE ................................ 283

Rozdzia 14. Nadawanie i odbieranie uprawnie ................................................ 285Konta u ytkowników .................................................................................................... 285

Zak adanie i usuwanie kont u ytkowników ............................................................ 286Role .............................................................................................................................. 287

Tworzenie i usuwanie ról ....................................................................................... 287Przypisywanie ról do u ytkowników ..................................................................... 287Specjalna rola Public .............................................................................................. 288

Uprawnienia ................................................................................................................. 288Nadawanie i odbieranie uprawnie ........................................................................ 289Dziedziczenie uprawnie ....................................................................................... 290Przekazywanie uprawnie ...................................................................................... 292Zasada minimalnych uprawnie ............................................................................. 293

Podsumowanie .............................................................................................................. 293Zadania ......................................................................................................................... 294

Dodatki

Dodatek A Rozwi zania zada ....................................................................... 297

Skorowidz .................................................................................... 333

Poleć książkęKup książkę

Page 26: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

334 Praktyczny kurs SQL

instrukcjaROLLBACK TRAN, 236, 237SELECT, 51SELECT … INTO, 218TRUNCATE TABLE, 223UPDATE, 224

instrukcjeautomatycznie rozszerzane,

270Connection Statements, 46Control Statements, 46Data Statements, 46Diagnostics Statements, 46Schema Statements, 46Session Statements, 46Transaction Statements, 46

InterBase, 10izolowanie transakcji, 241

Jjawne zatwierdzanie transakcji,

234j zyk

interpretowany, 39kompilowany, 39proceduralny, 39SQL, 19, 37strukturalny, 39

Kklasy instrukcji, 46klauzula

FROM, 53GROUP BY, 125, 128HAVING, 138ORDER BY, 268OVER, 144TOP, 85WHERE, 76

kluczkompozytowy, 259obcy, 92, 108, 261podstawowy, 214

kolejnokolumn, 23wierszy, 24wykonywania klauzul, 128wykonywania zapyta , 198z cze , 104

kolumny, 22, 55komentarze, 43

kompozytowe kluczepodstawowe, 259

konstruktor wierszy, 217konto u ytkownika, 285, 286konwersja typów, 62

Llitera y, 42, 65logika trójwarto ciowa, 73

czeniedanych tekstowych, 60tabel, 91wierszy, 113wyników zapyta , 109

Mmodel

optymistyczny, 246pesymistyczny, 247relacyjny, 21

modele baz danych, 24modyfikowanie

danych, 213, 272indeksów, 278widoków, 270

MySQL, 10

Nnadawanie uprawnie , 285, 289nazwy obiektów, 54niepowtarzalne odczyty, Non-

repeatable reads, 232niepowtarzalno , 259normalizacja, 32NOT NULL, 257

Oodbieranie uprawnie , 285, 289odczytywanie

widma, Phantom reads, 232danych, 53, 271

ograniczenia, 256, 264okienka, 151opcje indeksów, 280operator, 42

ALL, 193

AND, 75ANY, 189, 192APPLY, 115BETWEEN ... AND, 79CUBE, 129EXCEPT, 112EXISTS, 186GROUPING SETS, 132IN, 78INTERSECT, 112IS NULL, 81LIKE, 80NOT, 75OR, 75PIVOT, 134ROLLUP, 129SOME, 189UNION, 110UNION ALL, 111UNPIVOT, 137

operatoryarytmetyczne, 59logiczne, 74porównania, 77SQL, 78

Oracle Database, 10

Ppartycjonowanie

danych, 147, 208wierszy, 143

pierwsza posta normalna, 33PK, Primary Key, 257PL/pgSQL, 44PL/SQL, 44pobieranie danych, 51podzapytania, 161

a z czenia, 172jako zmienne, 162jako ród a danych, 173niepowi zane, 162niezwracaj ce adnych

warto ci, 166powi zane, 168zwracaj ce list warto ci, 165

porz dkowanie danych, 149posta Boyce’a-Codda, 34PostgreSQL, 10postulaty Codda

integralno danych, 32przetwarzanie danych, 31struktura danych, 31

poziomy zgodno ci, 48

Poleć książkęKup książkę

Page 27: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

Skorowidz 335

procedura, 113procedury u ytkownika, 42przekazywanie uprawnie , 292przetwarzanie

pojedynczych danych, 38zbiorów, 38

przyk adowa baza danych, 16przypisywanie ról, 287punkty przywracania, 238

RRead Committed, 242Read Uncommitted, 242relacyjne bazy danych, 21, 30Repeatable Read, 243rola Public, 288role, 287rozpoczynanie transakcji, 234ró nica zapyta , 112

SSARG, 203schemat, 255Serializable, 245serwery bazodanowe, 10, 197, 256sk adnia j zyka SQL, 41s owa kluczowe, 43sortowanie

danych tekstowych, 69wyników, 66

SQL, 19SQL PL, 44SQL Server, 10, 11SQL3, 46, 49sta e, 65standardy ANSI, 44stronicowanie wierszy, 87struktura tabeli, 256strukturalny j zyk zapyta , 37suma zapyta , 109

Ttabele, 21, 251

ograniczenia, 256pochodne, 174tworzenie, 254usuwanie, 254z czenia, 91–109zmiana struktury, 256

transakcje, 231izolowane, Isolation, 232niepodzielne, Atomicity, 232poziomy izolowania, 241rozpoczynanie, 234spójne, Consistency, 232trwa e, Durability, 233wycofywanie, 236zagnie d anie, 237zatwierdzanie, 234, 237

transakcyjne przetwarzaniedanych, 233

trendy, 182tryb

niezatwierdzonego odczytu,242

odczytu zatwierdzonego, 242powtarzalnego odczytu, 243szeregowania, 245

tryby blokad, 239trzecia posta normalna, 33T-SQL, 44tworzenie

baz danych, 249, 251indeksów, 278ról, 287schematu, 255tabel, 254widoków, 267

typy danych, 46

Uuprawnienia, 285

dziedziczenie, 290na serwerze SQL, 289nadawanie, 289obiektowe, 288odbieranie, 289przekazywanie, 292systemowe, 288zasady, 293

uprawnienia u ytkowników, 283usuwanie

baz danych, 251, 254danych, 221indeksów, 278kaskadowe, 263kont u ytkowników, 286ról, 287tabel, 254widoków, 267wyników podzapyta , 222

utrata aktualizacji,Lost update, 232

Wwarto ci domy lne, 215, 260warto NULL, 47, 74, 216, 257warunek logiczny, 260widok, View, 42, 113, 267

grupuj cy dane, 272modyfikowanie, 270modyfikuj cy dane, 272odczytywanie danych, 271tworzenie, 267usuwanie, 267zagnie d ony, 271zalety, 275

wiersze, 23, 73, 119w a ciwo ci transakcji, 231wspó bie no , 231, 239wstawianie

danych, 213wyników zapyta , 218

wybieraniekolumn, 55wierszy, 73

wycofywanie transakcji, 236wydajno

instrukcji, 264zapyta , 197z cze , 207

wyniki funkcji tabelarycznych,113

wyniki zapyta , 91, 109cz wspólna, 112ró nica, 112suma, 109

wyra enia, 58, 124, 225wyszukiwanie danych, 203wyznaczanie trendów, 182wyzwalacz, Trigger, 42

Zzagnie d anie

funkcji grupuj cych, 124podzapyta , 167transakcji, 237

zakleszczenie, DeadLock, 240zak adanie kont u ytkowników,

286zakresy blokad, 239zapytania, 197

kolejno wykonywania, 198plany wykonania, 199

Poleć książkęKup książkę

Page 28: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne

336 Praktyczny kurs SQL

zasada minimalnych uprawnie ,293

zatwierdzanie transakcji, 234, 237zliczanie wierszy, 121z czenia, 207

krzy owe, 100

lewostronne, 99naturalne, 91nienaturalne, 91nierówno ciowe, 96obustronne, 99prawostronne, 99

równo ciowe, 96wielokrotne, 102zewn trzne, 98

z czenie tabeli z ni sam , 106z o one warunki logiczne, 82zmiana struktury tabeli, 256

Poleć książkęKup książkę

Page 30: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Rozdziaä 9. Wydajno è zapytaþ W jaki sposób serwery bazodanowe wykonuj zapytania? W jakiej kolejno ci wykonywane s poszczególne