SQL Server Administration: SQL Server 2016 SP1 – Standard prawie jak Enterprise!


Czy warto aktualizować silnik baz danych?

Nie tylko warto, ale koniecznie trzeba to robić. Jednym z zadań administratora jest dbanie o regularną aktualizację silnika oraz innych komponentów wchodzących w skład instancji baz danych. Jest to bardzo ważne, ponieważ tzw. „łatki” mają za zadanie naprawić błędy, poprawić bezpieczeństwo i wydajność, a nawet dodać nowe funkcjonalności. Oczywiście, jak to często w życiu bywa, zdarzają się łatki, które jedno naprawią, ale przy okazji drugie popsują…

Tak było na przykład z Service Pack’iem 1 dla SQL Server’a 2014, który pojawił się 15 kwietnia 2015 roku i szybko zniknął, ponieważ zawierał poważny błąd uaktywniający się na instancjach zawierających katalog SSIS.

Dlatego wgrywając SP lub CU (Cummulative Update), musimy zabezpieczyć się na wypadek wszelkich ewentualności. Procedura wgrywania aktualizacji powinna obejmować „wygrzanie” i przetestowanie poprawek na środowiskach nieprodukcyjnych. Następnie wykonanie kopii zapasowych i dopiero wtedy – instalację na produkcji.

Jednak zdecydowana większość poprawek nie zawiera takich „niespodzianek”. Nie inaczej jest z najnowszym Service Pack’iem dla SQL Server 2016 z 16 listopada 2016 roku, który poza całkiem sporą listą naprawionych błędów (w stosunku do wersji RTM) zawiera rewolucyjną wręcz zmianę. Otóż większość funkcjonalności wersji Enterprise od momentu zainstalowania SP1 są dostępne również w wersji Standard, Web, Express i LocalDB!

Nie wierzysz? Spójrz: https://www.microsoft.com/en-us/sql-server/sql-server-editions

Poprawka jest naprawdę epokowa i wprowadza wiele zamieszania, nie tylko w edycjach SQL Server’a Microsoft’u, ale również na globalnym rynku relacyjnych baz danych. Sprawdźmy zatem te rewelacje…

Robimy laba

Z mojego, administracyjnego, punktu widzenia najbardziej pożądane funkcjonalności w niższych niż Enterprise edycjach to:

– snapshoty baz danych,

– partycjonowanie tabel,

– kompresja danych,

– przebudowa indeksów online.

Przygotowałem sobie 3 instancje:

SQL Server 2016 Versions

Mamy więc instancję domyślną w wersji Standard RTM (PRDSRV01) oraz dwie instancje nazwane z zainstalowanym już SP1. Pierwsza to także Standard (PRDSRV01\SQL2016SP1), natomiast druga to Express (PRDSRV01\SQLEXPRESS). Na każdej z nich zainstalowałem testową bazę WideWorldImporters.

Sprawdzamy…

Snapshoty baz danych

Najpierw test na instancji RTM. Zgodnie z oczekiwaniami:

Teraz próba na instancjach z zainstalowanym SP1:

Snapshoty

Działa nawet na Expressie!

Działa również odtwarzanie baz ze snapshota. Ta funkcjonalność dla administratora będzie szczególnie przydatna na wersji Standard, gdy będziemy chcieli przygotować kopię dużej bazy przed wdrożeniem sporych zmian na bazie. W razie problemów odtworzenie do punktu wykonania migawki będzie błyskawiczne. Wyobraźmy sobie sytuację, w której odtworzenie 4 TB bazy z tasiemek może trwać kilka(naście) godzin, natomiast odtworzenie ze snapshota będzie trwało zaledwie kilka(naście) minut!

Partycjonowanie tabel

Najpierw test na instancji RTM. Już przy zakładaniu funkcji partycjonującej otrzymujemy:

Na dwóch pozostałych instancjach… działa:

Partitioning

To również bardzo cenna funkcjonalność dostępna dotychczas tylko w edycji Enterprise. Bez dużych zmian w kodzie przydatna np. w tabelach z logami, gdzie zamiast kasować historyczne dane deletami będzie można obciąć całą partycję. Jak dla mnie – rewelacja!

Kompresja

I znowu. Na defaultowej instancji nawet nie obliczymy zysków zaoszczędzonego miejsca, nie wspominając o właściwej kompresji na poziomie strony lub wiersza:

Natomiast na pozostałych dwóch instancjach – nie ma żadnego problemu:

Compress

Włączając kompresję, redukujemy nie tylko ilość zajmowanego miejsca na dysku przez dane, ale również zmniejszamy ilość operacji I/O, co może mieć niebagatelny wpływ na wydajność naszego silnika baz danych.

Beczka miodu

To nie wszystkie funkcjonalności Enterprise dostępne w niższych edycjach. Gdy przyjrzymy się dokładniej tabelce Compare SQL Server 2016 SP1 editions, dowiemy się jeszcze o:

– indeksach Columnstore,

– In-Memory OLTP

– Always Encrypted

– Row-Level Security (to było w Standard, od teraz jest również w Express i LocalDB)

– Dynamic Data Masking (to było w Standard, od teraz jest również w Express i LocalDB)

– PolyBase

– Change Data Capture

– i jeszcze kilku innych – pełna lista jest dostępna tutaj: https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/

Tak jak pisałem – mamy do czynienia ze zmianą rewolucyjną. Tym bardziej, że mimo tych ulepszeń cena wersji Standard nie rośnie. Ma to ogromne znaczenia dla klienta, który potrzebuje jednej lub kilku z tych funkcjonalności, a nie ma zamiaru kupować edycji Enterprise.

Policzmy to sobie. Dla licencji Enterprise per core z SA musielibyśmy dziś zapłacić około 75 tys. za 2 cory. Musimy kupić minimum 4 cory, co nam daje 150 tys. Załóżmy, że potrzebujemy jednak 16 corów, więc musimy wyłożyć 600 tys.

Dla takiej samej liczby licencji w Edycji Standard per core z SA zapłacilibyśmy odpowiednio 40 tys. (4 cory) i 160 tys. (16 corów).

Czy to niewystarczająca zachęta do zakupu wersji SQL Server 2016 Standard?

To zależy, bo w prawie każdej beczce miodu znajdzie się…

Łyżka dziegciu

A w tym przypadku owych łyżek będzie więcej niż jedna…

Niestety, nie działa przebudowa indeksów w trybie online. Według mnie to jest podstawowy brak. Nie napiszę, że wada, bo jak mówią, darowanemu koniowi w zęby się nie zagląda.

Podobnie jest z niektórymi ulepszeniami, do których widać odsyłacze do tekstu bardzo drobnym drukiem, czyli na przykład in-memory OLTP w wersji Standard jest ograniczone do 32 GB RAM (ćwiartka dostępnego RAM).

A powyższe przypomina nam przy okazji o innych istotnych ograniczeniach edycji Standard, czyli maksymalna pamięć to 128 GB czy też maksimum ilości corów na poziomie 24. Co do corów mógłbym się zgodzić – jeżeli już chcesz mieć super wydajny silnik, zainwestuj jednak w Enetrprise’a. Ale pamięć mogłaby być nieco większa…

Jednak nie ma co narzekać – i tak mamy „za darmochę” sporo ulepszeń. 😉

A może zastanawiasz się nad upgrade’m z wersji 2005 roku, która już od kwietnia 2016 roku nie ma wsparcia producenta? Pamiętaj również, że w 2019 roku kończy się wsparcie dla wersji 2008 R2…

Powyżej opisane ulepszenia dostępne w SP1 powinny Cię ostatecznie przekonać, że warto przenieść się do wersji 2016 SP1.

Źródła:

https://www.microsoft.com/en-us/sql-server/sql-server-editions

https://www.brentozar.com/archive/2015/04/breaking-news-dont-install-sql-server-2014-sp1/

https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0

https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/


Mirosław Świerk

O Mirosław Świerk

Zawodowo już kilkanaście lat zajmuję się administracją SQL Server, staram się być na bieżąco, co wcale nie jest łatwe, ale lubię również dzielić się zdobytą wiedzą jako trener... Prywatnie natomiast najbardziej lubię rozmawiać z ludźmi (bezpośrednio a nie przez telefon czy Skype'a) oraz jestem fanem Commodorków, Spectrumów czy innych Amstradów ;-)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *