Novinky v SQL 2014

Microsoft vydal novou verzi databázového serveru SQL Server 2014. V seriálu si povíme, jak mnohé z nových funkcí využít pro zvýšení výkonu, spolehlivosti a bezpečnosti SQL Serveru.

Prvního dubna Microsoft oficiálně vydal novou verzi databázového serveru SQL Server 2014. Připadá mi, že to není tak dlouho, co jsme popisovali novinky verze 2012, a už je zde verze nová. Dokonce necelý měsíc po oficiálním vydání už je dostupná i první kumulativní aktualizace pro tuto verzi.

Jak je zvykem, každá nová verze přináší několik zásadních novinek, které posouvají možnosti SQL Serveru dále. V některých oblastech se jedná o zcela nové koncepty, jako je InMemory OLTP nebo buffer pool extension. V jiných jsou to spíše příjemná a užitečná rozšíření již existujících součástí, například větší možnosti služby Resource Governor. Dnes si ukážeme, jak mnohé z těchto funkcí využít pro zvýšení výkonu, spolehlivosti a bezpečnosti SQL Serveru.


Vlastní role pro zabezpečení

A začneme rovnou u bezpečnosti. V nové verzi byla rozšířena možnost práce s rolemi na úrovni serveru. Od verze 2012 je možné vytvářet role vlastní, a u nové verze je přidáno několik oprávnění, která lze nastavit. Například tak, aby databázový administátor nemohl číst citlivé informace z databáze.

SQL 2014 01

Touto sekvencí dotazů jsme nejprve vytvořili nový SQL login. Následně byla vytvořena nová role duplikující roli sysadmin, do které byl přidán login. A této roli jsme omezili možnosti pro čtení dat z databází, ale zároveň má tato role možnost například databáze zálohovat, nebo vytvářet nové loginy atd. Společně s auditem, kdy alespoň audit na úrovni serveru je dostupný již v Standard edici, je možné vyladit zabezpečení serveru opravdu tak, abychom dosáhli „least priviledge“ principu.

Zálohování do Microsoft Azure

Zálohování databází je běžnou součástí správy databázového serveru. V nové verzi SQL Serveru 2014 je možné zálohovat databáze nejen na disky, ale i do úložiště Microsoft Azure Storage a využít tak „cloud storage“ pro uložení záloh databází.

SQL 2014 02

Možnost zálohovat do Microsoft Azure je dostupná i pro nižší verze SQL Serveru, více v minulém článku. Výhodou takových záloh jsou nízké náklady na cloud úložiště a jednoduchá konfigurace. Navíc tyto zálohy mohou být i geograficky distribuovány a je tak zajištěna vysoká spolehlivost úložiště pro zálohy.

Nejen u Azure, ale celkově v nastavení zálohování může být použito šifrování pro zvýšení bezpečnosti záloh. Pro šifrování je potřeba mít vytvořen certifikát, podobně jako pro transparentní šifrování databáze. Bez serverového certifikátu nebude možné databázi obnovit, je proto nutné i správně zálohovat tento certifikát. Výhodou proti TDE je využití šifrování jen na úrovni zálohy, bez šifrování databáze na disku.

Integrace s Microsoft Azure

Cloudové služby mohou být využity i pro samotný provoz databází, ne pouze pro jejich zálohování. Integrace mezi SQL Serverem a Microsoft Azure je poměrně značná, a přímo samotné Management Studio nabízí hned dvě možnosti, jak existující databázi přenést do Microsoft Azure. První možností je přenést databázi do virtuálního serveru, který běží ve Microsoft Azure, druhou je vytvoření Azure SQL Database, ke které se připojíme jako ke každému jinému SQL serveru. Pro obě nasazení do Azure jsou k dispozici krátcí průvodci, ve kterých je nutné vyplnit pouze informace potřebné k přípojení do Microsoft Azure.

Integrace na Microsoft Azure je však mnohem silnější, v aktuální verzi můžeme Azure použít i jako úložiště pro samotné datové a log soubory databází. Pro takové využití Azure úložiště je potřeba rychlé a spolehlivé připojení k internetu. Nabízí se tedy možnost využít Azure storage například jako sekundární datový soubor pro archivní data. Samotná konfigurace má několik „ale“, není možné do Azure uložit například filestream data, u takovýchto souborů není možné v Azure zapnout georeplikace atd.

SQL 2014 05

Buffer Pool Extension

Zcela nová funkce pro zvýšení výkonu serveru, která je dostupná pouze u edicí Standard a Enterprise, je buffer pool extension. Buffer pool slouží jako primární zdroj pro paměťovou alokaci v rámci serveru. Datové a index stránky jsou načítány do buffer pool při zpracování dotazů. Jsou-li tyto stránky změněny v paměti, musí být následně opět uloženy zpět na disk. V případě nedostatku paměti na serveru a také při operaci CHECKPOINT jsou tyto změněné stránky odstraněny na disk a následně, jakmile jsou potřeba pro zpracování, jsou opětovně načteny do paměti. Tyto krátké, avšak frekventované IO operace vysoce zatěžují disk náhodným přístupem k datům.

Buffer pool extension umožňuje rozšířit buffer pool o SSD disk, a získat tím větší úložiště pro paměťové stránky. Buffer manager pracuje s tímto rozšířeným poolem v konceptu cache s více úrovněmi. L1 cache je uložena v operační paměti a L2 cache právě na SSD disku. Buffer manager ukládá do L2 cache pouze tzv. clean pages, tedy paměťové stránky, které nebyly změněny. Změněné stránky (dirty pages) zůstavají uloženy pouze v paměti.

SQL 2014 03

Velikost buffer extension může dosahovat až 32násobku hodnoty max_server_memory. Microsoft doporučuje poměr mezi max_server_memory a buffer pool extension mezi 1:4 až 1:8. Buffer extension má i své performance counters, kterými je možné sledovat zatížení a využití tohoto přídavného úložiště.

SQL 2014 04

AlwaysOn

AlwaysOn byla do sady technologií pro vysokou dostupnost dodána až v předposlední verzi SQL Serveru 2012, a to pouze v Enterprise edici. AlwaysOn je svým způsobem kombinací mezi Database Mirroringem a Log Shippingem. AlwaysOn je možné nasadit v několika kombinacích, stejně jako u Mirroringu máme k dispozici synchronní a asynchronní režim, a podobně jako v Log Shippingu je možné databáze replikovat na více serverů. Jednou z velkých výhod těchto replik je jejich dostupnost pro čtení, která je dokonce doplněna o tzv. read-only routing. U nové verze SQL Serveru je hlavním rozšířením AlwaysOn počet replik, který se nyní zvedl na osm a z toho dvě mohou být synchronní. I u AlwaysOn je možné využít integrace s Microsoft Azure a repliky mohou být uloženy i na Azure úložišti, což nám dává možnosti konfigurovat zajímavé hybridní scénáře. U sekundárních replik je nyní možné tyto read-only repliky používat i v případě, kdy primární replika není dostupná.

Resource Governor pro IO

Resource governor není zcela nová služba, u SQL serveru je k dispozici již značnou dobu. Původně bylo možné pomocí governoru omezit pamět a procesorový výkon dostupný pro jednotlivé relace připojené k serveru. Nově je možné omezit i zatížení diskového systému pomocí MAX_IOPS_PER_VOLUME, je tedy možné kontrolovat fyzické IO operace pro daný resource pool.

Závěrem

Nová verze SQL serveru přináší zajímavé novinky pro výkon, bezpečnost a také integraci s Microsoft Azure. V následujících dílech si představíme některé z dalších novikek, jako je InMemory OLTP či práci s novými indexy. NOvi