Skip to content

Instantly share code, notes, and snippets.

@pawelkl-zz
Last active January 2, 2016 04:59
Show Gist options
  • Save pawelkl-zz/8254447 to your computer and use it in GitHub Desktop.
Save pawelkl-zz/8254447 to your computer and use it in GitHub Desktop.

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ć):

  1. PAMIĘĆ (Properties->Memory)
  2. CZAS TRWANIA
  3. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment