Co nowego w silniku bazodanowym SQL Server – February CTP, cz. I     Microsoft SQL Server 2008

Co nowego w silniku bazodanowym SQL Server – February CTP, cz. II Udostępnij na: Facebook

Autor: Damian Widera

Opublikowano: 15 kwietnia 2008

Zawartość strony
 Wstęp   Wstęp
 Rozszerzenia w funkcjonalności Policy Based Management   Rozszerzenia w funkcjonalności Policy Based Management
 Audyt baz danych   Audyt baz danych
 Polepszenia w równoczesnym przetwarzaniu zapytania na obiektach partycjonowanych.   Polepszenia w równoczesnym przetwarzaniu zapytania na obiektach partycjonowanych.
 Inne ważne nowości w skrócie.   Inne ważne nowości w skrócie.
 Podsumowanie   Podsumowanie

Wstęp

W tej części artykułu zostaną opisane kolejne nowości związane z SQL Server 2008. Dowiecie się m. in. o rozszerzeniach w funkcjonalności Policy Based Management, o funkcjonalnościach umożliwiających wykonanie audytu bazy danych oraz o poprawie wydajności zapytań na partycjonowanych tablicach dla równoległych planów zapytań poprzez zmianę sposobu, w jaki plany są reprezentowane.

Uwaga

Microsoft SQL Server 2008 February CTP jest rozwojową wersją systemu. Firma Microsoft nie gwarantuje, że opisane w artykule funkcjonalności znajdą się w wersji finalnej systemu w takiej postaci, jak to przedstawiono w tekście. Nie ma również gwarancji, że funkcjonalności te w ogóle znajdą się w wersji finalnej.

 Do początku strony Do początku strony

Rozszerzenia w funkcjonalności Policy Based Management

Policy – Based Management (znane z wersji CTP4 oraz CTP5 jako Declarative Management Framework) zostaje dostarczone z 40 gotowymi polisami, zgodnymi z najlepszymi praktykami firmy Microsoft z zakresu administrowania serwerem baz danych. Najważniejszą zmianą wprowadzoną od wersji CTP5 systemu jest ta, iż polisy te muszą zostać najpierw zaimportowane do instancji serwera a ich import odbywa się z menu kontekstowego, jak pokazano na rys.1. poniżej.

Rysunek 1 Import polis do systemu Policy - Based Management.

Domyślne polisy można znaleźć w katalogu:

C:\Program Files\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033.

Oprócz polis dla silnika baz danych znajdują sie jeszcze trzy polisy dla Reporting Services oraz Analysis Services, a spełniają one rolę konfiguracyjną dla tych środowisk, ponieważ nie jest dostępne narzędzie znane z poprzedniej wersji systemu – Surface Area Configuration.

Import polisy sprowadzono do wskazania jednej lub wielu polis na dysku oraz określenia dla nich sposobu, w jaki zostaną wprowadzone do serwera baz danych (rys.2.).

Rysunek 2 Opcje importu polis do serwera baz danych.

Dodatkowo istnieje możliwość dodania nowej lub otwarcia polisy bezpośrednio z głównego menu dostępnego w SQL Server Management Studio (rys.3) .

Rysunek 3 Opcja dodania / otwarcia polisy z menu SQL Server Management Studio.

W materiałach dostarczonych z CTP6 zapewniono również, że Policy Based Management posiada już status ‘functionality completeness’, a więc nie powinniśmy zobaczyć więcej zmian, czy nowości dla tej funkcjonalności.

 Do początku strony Do początku strony

Audyt baz danych

SQL Server 2008 dostarcza także kilku niewątpliwie ciekawych funkcjonalności umożliwiających wykonanie audytu czy to instancji, czy konkretnej bazy danych. Pozwala to administratorom zaimplementować tzw. strategię głębokiej obrony (defense-in-depth), która będzie dokładnie dopasowana do konkretnej instancji serwera baz danych.

Audyt instancji lub bazy oznacza, iż można śledzić i logować zdarzenia, które miały miejsce w systemie. Administrator może używać wielu metod dla wykonania audytu serwera, ale dopiero w SQL Server 2008 czynności te mogą zostać zautomatyzowane.

Audyt w SQL Server 2008 może być przeprowadzony na poziomie instancji serwera lub konkretnej bazy danych. Audytem zarządza nowa funkcjonalność - SQL Server Audit, w skład której wchodzą komponenty odpowiedzialne za wygenerowanie odpowiedniego zdarzenia (audytu) w sytuacji, w której zaszła określona akcja (np. wykonana została komenda INSERT przez konkretnego użytkownika do określonej bazy danych). Administrator baz danych określa, które akcje czy grupy akcji należy monitorować poprzez obiekt SQL Server Audit. W jednej instancji SQL Server można zdefiniować więcej niż jeden obiekt SQL Server Audit.

Wykonanie audytu składa się z kilku kroków:

  1. Utworzenia obiektu SQL Server Audit.
  2. Wykonania specyfikacji audytu na poziomie bazy danych lub instancji serwera.
  3. Włączeniu obiektu audytu.
  4. Odczytaniu przechwyconych zdarzeń.

Obiekt SQL Server Audit można zdefiniować w SQL Server Management Studio w głównym węźle Security, jak pokazano poniżej:

Rysunek 4 Definiowanie audytu za pomocą SSMS.

Po wybraniu odpowiedniej opcji z menu kontekstowego można przystąpić do tworzenia obiektu audytu. Nie jest to proces trudny i skomplikowany, co ilustruje rys. 5:

Rysunek 5 Tworzenie audytu na poziomie instancji serwera baz danych - definiowanie własności.

Konfiguracja tego obiektu w zasadzie sprowadza się do określenia jego kilku podstawowych własności, takich jak:

  1. Nazwa (domyślna jest w formacie <Audit-data-czas>)
  2. Opóźnienie w przesyłaniu zdarzeń z obiektu audytu do docelowego miejsca przechowania informacji (patrz pkt. c poniżej)
  3. Wybór docelowego miejsca przechowania informacji o audycie – domyślnym miejscem jest plik (należy wtedy wskazać katalog, w którym będzie on przechowany), ale można te informacje składować także w dzienniku aplikacji (Application Log) lub dzienniku zabezpieczeń (Security Log).
  4. Pole Shut down server on audit log failure – informuje, iż serwer baz danych zostanie zatrzymany w przypadku, gdy nie powiedzie się zapis do logu audytu
  5. Dodatkowych informacji – o zarezerwowaniu określonego miejsca na plik audytu itd.

Po zakończeniu konfiguracji obiekt audytu jest domyślnie wyłączony i należy go włączyć za pomocą menu kontekstowego (rys 6 poniżej), które umożliwia także przeglądanie informacji związanych z bieżącym audytem:

Rysunek 6 Opcje menu kontekstowego dla audytu na poziomie instancji serwera baz danych.

W następnym kroku należy określić specyfikację audytu na poziomie instancji lub konkretnej bazy danych – dla tej drugiej opcji należy przejść do węzła Security i wybrać opcję utworzenia nowej specyfikacji audytu:

Rysunek 7 Tworzenie nowej specyfikacji audytu na poziomie bazy danych.

Następnie należy wskazać akcje lub grupy akcji, które mają zostać przechwytywane i notowane:

Rysunek 8 Konfiguracja specyfikacji audytu bazy danych.

Po zatwierdzeniu konfiguracji pokazanej powyżej można już obserwować kiedy i jakie zdarzenia zostały przechwycone do pliku audytu, którego zawartość można przeglądać po wybraniu opcji ViewAudit Logs z menu kontekstowego pokazanego na rys. 8 powyżej.

Z punktu widzenia automatyzacji procesu przeglądania plików zawierających informacje o przechwyconych zdarzeniach ważne jest, że istnieje funkcja fn_read_audit_file, za pomocą której można te informacje otrzymać w sposób programowy – z poziomu kodu T-SQL.

 Do początku strony Do początku strony

Polepszenia w równoczesnym przetwarzaniu zapytania na obiektach partycjonowanych.

SQL Server CTP6 znacząco poprawia wydajność zapytań na partycjonowanych tablicach dla równoległych planów zapytań zmieniając sposób, w jaki plany są reprezentowane. Rozszerzona zostaje także informacja o partycjonowaniu zarówno dla planów generowanych podczas kompilacji jak i rzeczywistych – tworzonych podczas wykonywania zapytania.

SQL Server 2008 zmienia także wewnętrzny sposób przechowania partycjonowanej tablicy, która dla procesora zapytań wygląda jak wielokolumnowy indeks z kolumną PartitionID jako pierwszą. PartitionID jest kolumną wyliczaną - ukrytą i używaną wewnętrznie do reprezentowania kolejnych partycji.

Mając przykładową tablicę:

CREATE TABLE Tablica1

(

    i int

    ,j int

    ,k char(10)

    ,l char(10)

)

partycjonowaną po kolumnie i oraz posiadającą indeks zgrupowany na kolumnach j oraz k można oczekiwać, iż będzie ona wewnętrzne zinterpretowana jako:

Tablica1 (PartitionID, i, j, k, l)

Indeks zgrupowany będzie posiadał (wewnętrznie) następujący klucz:

(PartitionID, j, k)

Takie podejście pozwala optymalizatorowi zapytań wykonać operację przeszukiwania (seek)- bazując na PartitionID n- a dowolnej partycji tej tablicy. Eliminowanie nieużywanych z punktu widzenia zapytania partycji jest wykonywane właśnie podczas tej operacji. Dodatkowo, poszerzono także możliwości optymalizatora zapytań tak, aby operacja przeszukiwania lub skanowania była możliwa wykorzystując PartitionID oraz inne kolumny wchodzące w skład indeksu. Następnie wykonywany jest drugi krok – tzw. przeszukiwanie drugiego poziomu (second-level seek) z innymi warunkami spełniającymi jednak wymagania określone w kroku pierwszym. Ta operacja nazwana skip-scan pozwala optymalizatorowi zapytań przeprowadzić wstępna operację odnalezienia partycji, które muszą być dostępne podczas wykonywania drugiego kroku.

SQL Server 2008 dostarcza także nowej informacji o partycjonowaniu zarówno podczas kompilowania zapytania, jak i po jego uruchomieniu.

Plan zapytania dostarcza następujących informacji o :

  1. opcjonalnym atrybucie Partitioned, który oznacza, iż operator taki jak seek, scan, insert, update, merge, delete jest wykonywany na partycjonowanej tablicy,
  2. nowym elemencie SeekPredicateNew wraz z SeekKeys zawierającym atrybut PartitionID. Obecność dwóch elementów SeekKeys oznacza, iż operacja skip scan jest użyta właśnie na parametrze PartitionID,
  3. podsumowaniu zawierającym licznik ilości partycji, które zostały wykorzystane w zapytaniu. Ta informacja nie jest dostępna podczas kompilowania zapytania, ale pojawia się na aktualnym planie jego wykonania.

Nowe podejście do partycjonowanych tabel pozwala wydajniej odszukiwać dane oraz posiada jeszcze jedną ważną funkcjonalność, a mianowicie powoduje mniejszą eskalację zakleszczeń – pozwala zawrzeć zakleszczenia w obrębie jednej partycji nie blokując dostępu do danych znajdujących się na innych partycjach.

 Do początku strony Do początku strony

Inne ważne nowości w skrócie.

SQL Server 2008 February CTP zawiera jeszcze inne godne uwagi nowości lub ulepszenia:

  1. Polepszenia w SQL Server Management Studio:

    1. IntelliSense.
    2. Polepszony eksplorator obiektów.
    3. Węzły SQL Server Brokera w eksploratorze obiektów.
  2. Ulepszone wyszukiwanie pełnotekstowe.

  3. Rozszerzone możliwości języka T-SQL:

    1. Poprawiona funkcja CONVERT, która umożliwia teraz konwersję pomiędzy wartościami binarnymi a szesnastkowymi .
    2. Składnia opcji OPTIMIZE FOR została rozszerzona o słowo UNKNOWN, co pozwala silnikowi baz danych na użycie metod statystycznych do określenia wartości jednej lub wielu zmiennych lokalnych podczas optymalizacji zapytania. Do tej pory używane były zawsze wartości początkowe tych zmiennych.
    3. Składnia INSERT…EXECUTE może być użyta także dla serwerów dołączonych (linked server). Należy pamiętać, iż można użyć tej składni tylko w przypadku, gdy opcja MARS (multiple active record sets) jest wyłączona dla danego połączenia.
  4. Zaprezentowano gotowy scenariusz użycia (z praktycznym przykładem) funkcjonalności oferowanych przez Resource Governor – dla wykonania kompresji kopii zapasowej bazy danych. Wykonanie takiej kopii zwiększa zużycie zasobów procesora, przez co może negatywnie wpłynąć na inne operacje wykonywane w serwerze baz danych. Na praktycznym przykładzie pokazano, w jaki sposób utworzyć za pomocą Resorce Governor niskopriorytetowy proces, który będzie odpowiedzialny za wykonanie kompresji backupu. Szczegóły rozwiązania dostępne są w How to: Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL) (j. ang.).

 Do początku strony Do początku strony

Podsumowanie

SQL Server 2008 CTP 6 przybliża nam obraz produktu, jakiego z dużym prawdopodobieństwem możemy się spodziewać w wersji finalnej. Nowości zmieniające działanie aparatu składowania powinny zdecydowanie polepszyć wykonywanie zapytań (poprzez wykorzystanie filtered indexes). Dodatkowo, nowości związane z kompresją danych pozwolą optymalniej przechowywać dane na dysku a tym samym znacznie oszczędzać miejsce. Administratorzy otrzymali także potężne narzędzie, jakim z całą pewnością jest konsola PowerShell. Poznanie i umiejętność swobodnego operowania tą konsola na pewno znacznie ułatwi pracę czy to administratora czy dewelopera baz danych. Operacje audytu nareszcie doczekały się kompletnego rozwiązania pozwalającego wydajnie i automatycznie śledzić wszystkie akcje, które odbywają się na serwerze – to dobra wiadomość dla wszystkich, którzy do tej pory musieli używać własnych rozwiązań do tego typu operacji.

 Do początku strony Do początku strony


  Damian Widera, Project Manager & Team Lead (MCT, MCITP – DBA, MCSD.NET)
Od 8 lat zajmuje się projektowaniem, tworzeniem i wdrażaniem aplikacji wykorzystujących platformę .NET, SQL Server oraz Oracle. Obecnie pracuje jako project manager dla LGBS Polska. Pracował także jako trener, programista, administrator baz danych, twórca domumentacji oraz analityk biznesowy. Aktywnie współpracuje z polskim oddziałem Microsoft publikując atykuły, webcasty oraz porady z zakresu SQL Server na stronach TechNet. Jest współautorem książki „Serwer SQL 2008. Administracja i programowanie”.

Speaker na wielu konferencjach, m.in. Microsoft Heroes Happen Here, C2C, European PASS Conference, Microsoft Technology Summit, Energy Launch, TechED. Od 2004 r. posiada certyfikaty firmy Microsoft: MCT, MCITP–DBA oraz MCSD.NET. Jest współtwórcą oraz liderem jednej z najwiekszych grup pasjonatów SQL Server w Polsce – Śląskiej Regionalnej Grupy Microsoft (PLSSUG Katowice). Od listopada 2008 jest prezesem Polish SQL Server Users Group (PLSSUG) w Polsce. W styczniu 2009 nagrodzony tytułem MVP w kategorii SQL Server.
 Do początku strony Do początku strony

Co nowego w silniku bazodanowym SQL Server – February CTP, cz. I     Microsoft SQL Server 2008