Zaawansowane ustawienia nowej bazy danych

Zaawansowane ustawienia nowej bazy danych

Autor: Krzysztof Kapustka

Opublikowano: 5/3/2017, 12:00 AM

Liczba odsłon: 5972

Podczas omawiania procesu tworzenia nowej bazy danych z ustawieniami domyślnymi, wykonywanego z poziomu narzędzia zarządzania SQL Server Management Studio, wspomnieliśmy tylko o podstawowych własnoścach bazy danych, których konfiguracja jest niezbędna do tego, aby nowa baza danych mogła zostać pomyślnie utworzona na serwerze. W początkującym okresie nauki obsługi systemu SQL Server odpowiadające tym własnościom ustawienia, zgrupowane na stronie General okna tworzenia nowej bazy danych New Database, są na ogół wystarczające do opanowania podstaw w zakresie działania i tworzenia baz danych, tak więc nie zachodzi potrzeba zagłębiania się w bardziej zaawansowane opcje baz danych. Z czasem jednak będziemy poznawać coraz bardziej złożone zagadnienia, dla których opcje te staną się niezwykle ważne. W części Select a Page okna dialogowego New Database dostępne są jeszcze dwie dodatkowe strony z wieloma innymi ustawieniami zawansowanymi - są to odpowiednio strony Options oraz Filegroups. Przyjrzymy się teraz zawartym w nim ustawieniom, które pomogą nam doprecyzować charakter tworzonej bazy danych.

Strona ustawień Options

Strona ustawień Options zawiera szereg różnych opcji umożliwiających dostosowywanie sposobu porównywania i sortowania przechowywanych w bazie informacji, konfiguracji bazy pod kątem operowania w konkretnym modelu odzyskiwania czy definiowania bazy danych jako bazy w pełni lub częściowo zawartej.

Sortowanie

Pierwszym ustawieniem na stronie Options jest ustawienie Collation (Sortowanie), które w ramach dostępnych na rozwijanej liście pozycji definiuje sposób sortowania, a więc także i porównywania wartości przechowywanych w bazie danych (u podstaw sortowania danych leży możliwość ich porównywania). Istnienie tak dużej liczby możliwych do wyboru wariantów sortowania podyktowane jest różnorodnością dostępnych na świecie języków, w których to nawet tak prosta własność, jak porządek liter w alfabecie może nie być do końca jednoznaczna. Przykładem może tu być litera A, która w zależności od rozpatrywanego języka, w jakim występuje może zajmować w alfabecie pozycję tuż przed literą A, tuż za literą A, lub też znajdować się w oddzielnej grupie znaków specjalnych. W zależności od tego, jaki schemat sortowania danych nas interesuje, dla każdego dostępnego w systemie języka będziemy mieli do dyspozycji kilka wariantów do wyboru (warto zwrócić uwagę, że język angielski jako jedyny nie ma przydzielonej kategorii na liście dostępnych metod sortowania, lecz wykorzystuje pozycje należące do grupy Latin1). Dostępne wartości na pierwszy rzut oka wydają się bardzo tajemnicze i skomplikowane, jednak użyte w nich akronimy, takie jak CS, AS czy KS, pozwalają na łatwe zidentyfikowanie zachowania bazy danych po wybraniu takiej pozycji. Szczegółowe informacje na temat poszczególnych wariantów można oczywiście znaleźć w dokumentacji Microsoft. My wyjaśnimy tutaj tylko podstawowe skróty stosowane na liście wartości Colallation. Są to:

  • CS (Case-Sensitive) i CI (Case-Insensitive) odpowiedzialne odpowiednio za rozróżnianie i nierozróżnianie dużych i małych liter przy sortowaniu (jak w przypadku różnicy ponmiędzy systemami plików w systemach operacyjnych Linux i Windows)
  • AS (Accent-Sensitive) i AI (Accent-Insensitive) odpowiedzialne odpowiednio za uwzględnianie i nieuwzględnianie znaków diakrytycznych przy sortowaniu wartości

Model odzyskiwania

Kolejną ważną opcją jest Recovery model, czyli model odzyskiwania, który możemy skonfigurować na trzy sposoby: Full, Bulk-logged oraz Simple. Pierwsza wartość, Full (wariant domyślny), zapisuje w dzienniku bazy danych wszystkie informacje, jakie tylko mogą w nim zostać zachowane, co w razie konieczności pozwoli nam łatwo i precyzyjne przywrócić bazę danych do dowolnego stanu sprzed awarii. Niestety odbędzie się to kosztem ilości dostępnego miejsca na dysku i ogólnego spadku wydajności spowodowanego koniecznością zapisywania olbrzymich ilości informacji. Najważniejsze jest jednak to, że w modelu tym w przypadku przywracania bazy danych z kopii zapasowej możemy przywrócić ją do dowolnego punktu w czasie, a nie tylko do kilku wybranych punktów, powstałych w momencie tworzenia lub sporządzania kopii zapasowej tej bazy.

Przeciwieństwem ustawienia Full jest opcja Simple, która umieszcza w dzienniku tylko podstawowe informacje, przez co w przypadku wystąpienia awarii baza danych daje się odzyskać tylko do stanu, w jakim znajdowała się w momencie sporządzenia kopii zapasowej. Tracimy więc elastyczność przywracania danych, ale w zamian zyskujemy na poprawie wydajności podczas prawidłowej pracy.

Rozwiązaniem pośrednim jest model odzyskiwania Bulk-logged, który loguje do dziennika mniej informacji niż w modelu odzyskiwania Full, ale też więcej niż w modelu odzyskiwania Simple.

Dla środowisk testowych dysponujących bazami danych o charakterze mało ważnym lub tymczasowym zaleca się stosowanie opcji Simple. Z kolei dla środowisk produkcyjnych jedynym słusznym wariantem modelu odzyskiwania wydaje się być domyślna opcja Full.

Poziom zgodności

Opcja Compatibility level (Poziom zgodności) wyznacza stopień kompatybilności bazy danych z serwerem zarządzania bazy danych. Nowe bazy danych tworzymy zazwyczaj z najwyższym (najnowszym) poziomem zgodności, zgodnym z posiadaną przez nas wersją systemu SQL Server. Jeśli jednak przenosimy starą bazę danych na nowy serwer (np. w procesie jego wirtualizacji), możemy zechcieć skonfigurować ją ze stosowanym do tej pory niższym stopniem zgodności, co pozwoli tej bazie działać na nowym systemie dokładnie tak, jak zachowywała się do tej pory na jego starszej wersji. Funkcja ta działa więc podobnie do trybu zgodności aplikacji w systemach Windows, a poniekąd można ją przyrównać także do poziomów funkcjonalności domen Active Directory.

Typ zawierania

Kolejna zaawansowana opcja to Containment type (Typ zawierania) - ustawienie to wyznacza stopień separacji bazy danych od instancji silnika SQL Server, który ją zasila. Jeszcze do niedawna wszystkie bazy danych SQL Server były tworzone wyłącznie z ustawieniem None (Brak zawierania), przez co bazy te były mocno związane z leżącym u ich podstaw silnikiem bazy danych i jego konfiguracją. Baza o charakterze przeciwnym, czyli w pełni zawarta baza danych (ang. fully contained database), zawiera w swoich granicach wszystkie niezbędne ustawienia i metadane, co pozwala ją całkowicie uniezależnić od konfiguracji instancji silnika bazy danych SQL Server Database Engine, na której jest ona uruchamiana.

Operacja tworzenia w pełni zawartej bazy danych, czyli odseparowywania bazy od silnika SQL Server, wymagała do tej pory zaawansowanej wiedzy technicznej na temat współdziałania tych dwóch odrębnych komponentów, a przy tym był to proces bardzo czasochłonny. Z tego względu od wersji SQL Server 2012 mamy możliwość skonfigurowania bazy danych z wykorzystaniem typu zawierania Partial (Częściowe), co znacznie upraszcza proces rozdzielania bazy danych od instancji usługi SQL Server Database Engine. Baza z ustawieniem None to baza, w której żaden z rozważanych elementów zdefiniowanych przez użytkownika nie jest w pełni zawarty w granicach tej bazy, lecz wybierg poza te granice. Baza z ustawieniem Partial zawiera pewne elementy zdefiniowane przez użytkownika, które przechowywane są wyłącznie w granicach tej bazy. O bazie w pełni zawartej mówimy wtedy, gdy wszystkie brane pod uwagę elementy użytkownika leżą wyłącznie w granicach tej bazy, więc są niezależne od silnika bazy danych.

Powyższy opis może się wydawać nieco skomplikowany, więc podajmy pewien przykład. Podwyższenie stopnia zawierania bazy danych z poziomu None do poziomu Partial może przykładowo ułatwić jej przenoszenie, jako że pewne jej dane, jak choćby dane logowania do bazy, nie są już dłużej przechowywane ramach silnika bazy danych, lecz umieszczane są w samej bazie danych. Taka baza, już jako pełny lub częściowy kontener, będzie więc łatwa do przeniesienia na inną instancję serwera.

Pozostałe ustawienia na stronie Options

Reszta ustawień to w zdecydowanej większości opcje konfigurowane na zasadzie wyboru wartości Prawda/Fałsz (czyli z logicznego punktu widzenia wartości Włącz/Wyłącz). Pierwsza grupa opcji zawarta w części Automatic odpowiada za automatyczne wykonywanie pewnych czynności na bazie danych. Przykładowo ustawienia Auto Create Statistics (Automatyczne tworzenie statystyk) i Auto Update Statistics (Automatyczne aktualizowanie statystyk) precyzują, czy w kontekście tworzonej bazy danych mają być sporządzane i aktualizowane pewne statystyki pozwalające zoptymalizować działanie tej bazy. Dzięki temu, że serwer na bieżąco śledzi chociażby rozmiary poszczególnych tabel w rozważanej bazie, jest on w stanie optymalizować wykonywane na nich operacje poprzez stosowanie różnych algorytmów.

Opcja Auto Close (Automatyczne zamykanie) odpowiada za automatyczne zamykanie bazy danych w przypadku braku jakichkolwiek połączeń z tą bazą przez dłuższy okres czasu, co ma na celu zwolnienie zajmowanych przez nią zasobów. Po nawiązaniu najbliższego połączenia baza jest ponownie otwierana i gotowa do pracy. Ustawienie to warto jednak dobrze przemyśleć, jako że każdorazowe zamykanie i otwieranie bazy danych niesie ze sobą pewien dodatkowy koszt w postaci dodatkowych cykli procesora. Domyślnie wszystkie bazy danych SQL Server pozostają zawsze otwarte na czas działania instancji SQL Server.

Opcja Auto Shrink (Automatyczne zmniejszanie) automatycznie kompaktuje (kompresuje) pliki bazy danych do ich minimalnych rozmiarów, tak aby zajmowały one najmniejszą możliwą ilość przestrzeni dyskowej. Jako że operacja ta może mieć potencjalnie negatywny wpływ na wydajność operacji wejścia/wyjścia, jest ona standardowo wyłączona.

Podsumowanie

Podczas tworzenia nowej bazy danych z wykorzystaniem narzędzia SQL Server Management Studio mamy do dyspozycji szereg dodatkowych opcji, które umożliwiają nam bardziej precyzyjne określenie własności tworzonej bazy. Opcje te pogrupowane zostały na kilka odrębnych stron, pomiędzy którymi możemy przenosić się z poziomu widocznego w lewej części okna panelu Select a page. Warto jednak podkreślić, że baza danych jest obiektem dużo bardziej złożonym, i na etapie jej tworzenia mamy do dyspozycji tylko niewielką część ustawień. Pozostałe opcje bazy danych będziemy więc mogli zmodyfikować dopiero po jej utworzeniu, korzystając z okna właściwości bazy danych.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia