na kolokwium część administracyjna -strategie backapów -przyznawanie uprawnień -indeksy -profiler (najmniej)
zadanie za 25pkt extra za backupy za połowę punktów do północy
indeksy profilowanie
===== INDEKSY
-klastrowane <- klucz podstawowy -nieklastrowane
(unikalność na kolumnie)
proste / złożone
w 2012 doszedł COLUMNSTORE INDEX (indeks kolumnowy)
jak działa wyszukiwanie w sql server.
czy indeks klastrowany może być na wielu kolumnach.
poziomy 0 - HEAP [RID - RowID ](wszystkie wyniki są odkładane na stos) 1 - CLUSTERED - tylko jeden indeks 2 - NONCLUSTERED - indeks nieklastrowany - dane wskazują bezpośrednio jak klastrowany, ale nie przenosi danych pomiędzy stronami (liści) - może być wiele w tabeli N -
pusta strona - strata czasu przy przeszukiwaniu
przy założeniu kluczu podstawowego (korzeń drzewa) dane są przekładane pomiędzy stronami na podstawie liści drzewa
po jakim typie danych najlepiej układać indeksy
- wszelakie typy liczbowe
char > vchar
GUID? jest wydajny? -> bardzo nie wydajny, bo trzeba zrobić translacji
data jest wydajna? jest wydajna
za odpalanie indeksów jest odpowiedzialny optymalizator zapytań - sam wybiera indeks? => sam wybiera odpowiedni indeks
indeksy nieklastrowane trzeba konserwować: -automatycznie - po dorzuceniu danych indeks jest -ręcznie - przebudowa REORGANIZACJA PRZEBUDOWA -> trzeba uwzględnić (oszacować):
- PAMIĘĆ (Properties->Memory)
- CZAS TRWANIA
- MOMENT WYKONANIA
=> razem ze strategią backupu
indeksy:
- z automatu tworzony w obie strony (można przeglądać od góry i od dołu)
- na jedną lub wiele kolumn
indeks na wiele kolumn, nie po przecinku a z INCLUDE np. indeks TYTUL INCLUDE nazwisko i imię ASC/DESC
CONSTRAINT unikalność -> za pomocą indeksu
dokumentacja MSDN
jak na 2 sposoby założyć indeks klastrowany? CREATE CLUSTERED INDEX CREATE PRIMARY INDEX (jak założyć klucz podstawowy?)
kiedy robić
reorganizacja -> dużo updatów przebudowa -> dużo insertów i deletów
czy indeks klastrowanym zawsze jest optymalny? -> fragmentacja zawsze występuje, podczas przebudowy jest wybierany inny korzeń
*( indeks filtrowany - poindeksować wybrane wartości w danej tabeli, poindeksować książki danych autorów za pomocą WHERE przy tworzeniu indeksu )
indeksy można zablokować -> można wymusić niekorzystanie z indeksu
ĆWICZENIE
- stworzyć tabelę
- 1tys rekordów
- update na wszystkie rekordy
- dodać klucz podstawowy
- kolejny update
sys.dm_db_index_physical_stats 5-30 reorganizujemy ALTER INDEX REORGANIZE powyżej 30 przebudowa ALTER INDEX REBUILD WITH (ONLINE=ON)*
- może zarżnąć BD, tylko przy małych tabelach
FILLFACTOR - ograniczyć wypełnienie strony podczas przebudowy indeksu (domyślnie 80) ALTER INDEX ... REBUILD WITH (FILLFACTOR = 80); GO
PADINDEX ON/OFF czy przenosić na poziom indeksu? jak klastrowane TAK przy nieklastrowanych TYLKO PRZY ONLINE domyślnie - OFF
================
ZADANIE DO DOMU (7pkt)
- opis typów indeksów i przykłady ich użycia
- strategie indeksowania 5 tabel z bazy adv lub tsql
- uzasadnienie dlaczego te a nie inne kolumny zostały wybrane
- nalezży uwzględnić wszystkie możliwe indeksy
- opracować strategię...
.... do AdventureWorks zaprojektować strategię indeksowania tabele powinny być duże - z dużą ilośćią kolumn
- jak działają indeksy
5 tabel
Sprawozdanie z laboratorium powinno zawierać:
- opis typów indeksów i przykÅ‚ady ich użycia
- strategię indeksowania co najmniej 5 tabel z bazy AdventureWorks lub TSQL2012
- uzasadnienie dlaczego te a nie inne kolumny zostały wybrane - należy uwzględnić wszystkie możliwe indeksy
- opracować strategię konserwacji indeksów
================
Zadanie dodatkowe (25 pkt poza pulą ogólną)
Na podstawie wytycznych z poprzednich laboratoriów zaprojektować i wykonać bazę danych dla prostego systemu do obsługi księgarni. Należy uwzględnić, że księgarnia działa zawrówno w trybie stacjonarnym jak i online. W bazie należy uwzględnić rzeczy zarówno występujące po stronie obsługi księgarni (np.: modyfikacja stanów magazynowych; jak i użytkownika, np.: zakupy)
Oprócz bazy należy:
- zaprojektować strategię backupów i konserwacji
- zarządzać bezpieczeństwem
- poprawić wydajność bazy danych poprzez stworzenie i zarządzanie indeksami.
Do 18.01 dostarczyć należy:
- sprawozdanie (analogiczne do tych z poprzednich zajęć)
- skrypty wynikowe
- pliki bazy danych i logów (jeśli będą konieczne)
================
? CREATE INDEXES WITH INCLUDED COLUMNS
backupy uprawnienia role odpowiedni dostęp
generator procedur?? insert/update