SQL Server 2014 Sneak Preview

Microsoft SQL Server 2014, de nieuwe features toegelicht

Microsoft-SQL-Server-2014

In de meeste gesprekken die gevoerd worden met klanten wordt met ‘de nieuwe SQL Server’ nog SQL Server 2012 bedoeld. SQL Server 2012 is nu anderhalf jaar op de markt. Veel bedrijven zijn nauwelijks klaar met de migratie en heel vaak zelfs nog niet begonnen met de migratie. Toch zitten we alweer midden in de CTP (Community Technology Preview) van SQL Server 2014. In dit artikel worden enkele van de nieuwe features benoemd die ook deze versie weer de moeite waard maken.

Availability Groups

In SQL Server 2012 was AlwaysOn Availability Groups de meest in het oog springende nieuwe feature. In SQL Server 2014 komt Microsoft met een aantal uitbreidingen. Het aantal secondaries (stand-by databases die de workload kunnen overnemen als de primaire database omvalt en die desgewenst een deel van de read-only workload voor hun rekening kunnen nemen) is gegroeid van maximaal vier naar maximaal acht.

Hoewel die opschaling mooie scenario’s binnen bereik brengt, zijn er ook wel vraagtekens bij te zetten met betrekking tot de impact ervan op de performance. Wat echter echt mooi is, is het feit dat secondaries nu ook cloud databases mogen zijn. Als u high availability wilt en/of uw disaster recovery strategie wilt verbeteren, maar het inrichten van een tweede datacenter dat het eerste datacenter kan vervangen is een stap te ver, dan is het synchroniseren van de database naar de cloud een mooie optie.

The Cloud

Tegenwoordig lukt het bijna niet meer om in één zin de naam Microsoft uit te spreken zonder ook ‘the cloud’ te noemen. De belangrijkste opmerking hier is dat we ondertussen op SQL-Server-2014-cloudeen soort omslagpunt terecht zijn gekomen. Tot nu toe was de vraag ‘Wat kan in the cloud niet wat met een eigen SQL Server wel kan?’ gerechtvaardigd. Die vraag kan vanaf nu beter andersom worden gesteld. Microsoft heeft zich voorgenomen nieuwe features eerst in de cloud te introduceren. Pas later wordt de feature ook in het boxed product geïntroduceerd.

SQL Azure databases hebben dus eerder profijt van nieuwe features dan uw eigen lokale SQL Server databases. Naast de SQL Azure databases kunt u natuurlijk ook kiezen voor een met SQL Server uitgeruste virtuele server in de cloud. Dan heeft u, hoewel in de cloud, alsnog een ‘gewone’ SQL Server.

De belangrijkste feature met betrekking tot de cloud in SQL Server 2014 is waarschijnlijk de deployment wizard voor de cloud. SQL Server Management Studio (SSMS) is de belangrijkste tool voor DBA’s. Dat blijft, het maakt daarbij niet uit of uw databases lokaal staan of in de cloud (private of public). Vanuit SSMS kunt u makkelijk on-premise databases verhuizen naar de cloud.

Resource Governor IO governance

De resource governor is niet nieuw. Met de resource governor kunt u bepaalde connecties afknijpen voor wat betreft de hoeveelheid geheugen en de hoeveelheid CPU die deze connecties maximaal kunnen gebruiken voor het geval dat er resource contention ontstaat in het systeem. Het idee is dat belangrijke processen beter doorlopen, ofwel minder negatieve impact ondervinden, als er tegelijkertijd andere processen draaien zoals bijvoorbeeld de backup.

Nieuw in SQL Server 2014 is dat u nu ook de IO die een connectie gebruikt kunt beheersen. Als uw productieworkload vooral last heeft van het aantal IO’s dat de backup veroorzaakt, maar dat de CPU meer dan genoeg capaciteit heeft (niet ongewoon voor een database server), kunt u het maximale IO gebruik van de backup afknijpen. De doorlooptijd van de backup wordt langer, maar de impact op belangrijker processen wordt kleiner.

Security

SQL-Server-SecurityIn SQL Server 2012 heeft Microsoft de user defined server roles geïntroduceerd. Voor het eerst was de DBA in staat om op instance level zelf security rollen te definiëren. Het achterliggende idee is om het gebruik van de rol sysadmin terug te dringen. Iemand die lid is van sysadmin mag letterlijk alles en dat is in bijna alle gevallen te veel. Waarom zou een beheerder ook de inhoud van databases mogen bekijken?

In SQL Server 2014 komt er een aantal nieuwe rechten bij. Daarmee wordt het gebruik van de eigen server rollen interessanter gemaakt. Het wordt steeds meer mogelijk mensen alle rechten te geven die ze nodig hebben om een SQL server volledig te beheren, zonder dat ze inhoud van databases kunnen bekijken. Zeker in bedrijven waar veel privacygevoelige informatie opgeslagen wordt, is dat een grote pre.

Query Processing enhancements

Eén van de belangrijkste componenten van een DBMS is de query optimizer. Welke strategie kiest de engine om uw query uit te voeren? Met andere woorden, welk query plan wordt er gegenereerd? Een belangrijk onderdeel daarvan is de cardinality estimator. Deze schat op basis van de statistieken in hoeveel records uw query teruggeeft. Als deze schatting fout is, levert dat veelal een inefficiënt queryplan op en dat heeft dan weer slechte performance tot gevolg.

Microsoft heeft veel werk gestopt in het verbeteren van de algoritmes die de statistieken verwerken tot schattingen. Zonder dat de developer of de DBA iets moet doen, kan dat in SQL Server 2014 tot een betere performance leiden. Hier wordt met opzet de term ‘kan’ gebruikt. Voor specifieke workloads kan dit soort wijzigingen verkeerd uitpakken. Goed testen is dus gewenst. Voor het merendeel van de workloads levert het echter een positieve impact op.

Buffer Pool extension

De Buffer Pool is dat deel van het geheugen waar SQL Server gegevens opslaat. Hoe meer data van uw actieve dataset (de gegevens die regelmatig gebruikt worden) in het geheugen staan, hoe beter de performance van uw database is. Eigenlijk wordt de traagste component, IO, buiten spel gezet.

In SQL Server 2014 kunt u de buffer pool uitbreiden naar een file. Dat klinkt in eerste instantie misschien onzinnig, maar met SSD (Solid State Disk) in gedachte is het eigenlijk heel logisch. De IO latency van SSD is zo klein vergeleken met ‘gewone’ drives (zelfs met SAN’s) dat het eigenlijk net is alsof u het geheugen van uw server heeft vergroot. Dat laatste, meer echt geheugen, is zeker een goede keuze. Als dat echter niet meer kan in uw server, is het uitbreiden van de buffer pool naar SSD een goede optie.

Columnstore index

De Columnstore index was ook een nieuwe feature van SQL Server 2012. Hoewel dit een mooie feature was, leek het ook een beetje een versie 1.0 feature. Veelbelovend maar nog voor verbetering vatbaar. Die verbetering is er in SQL Server 2014 gekomen.

Met een columnstore index worden records niet meer rij-voor-rij opgeslagen maar kolom-voor-kolom. Op één enkele pagina liggen alleen waarden uit dezelfde kolom in plaats van dat een heel record, dus alle kolommen van hetzelfde record, is opgeslagen op die pagina. In datawarehousing schijnt gemiddeld per query 10-15% van de kolommen uit een tabel te worden opgevraagd. Bij een klassieke row store levert dat 85-90% IO overhead op. Als de gegevens kolom-voor-kolom worden opgeslagen is die overhead weg. Zet daar nog eens een verbeterde compressie ratio bij en een efficiëntere manier om records te verwerken (batch mode processing) en de performance vliegt omhoog.

In SQL Server 2012 hadden we alleen een nonclustered columnstore index. Dat houdt in dat de columnstore index bestond naast de tabel, volledig redundant. In SQL Server 2014 kunt u een clustered columnstore index maken. Niet meer een redundante structuur naast de tabel, maar de tabel zelf volledig als columnstore opgeslagen. Dat maakt meteen het gebruik van alle andere soorten indexen overbodig.

Een grote beperking van de columnstore index in SQL Server 2012 is dat de hele tabel read-only wordt zodra u een columnstore index maakt. Die beperking is in 2014 opgeheven. Ook zijn er minder beperkingen met betrekking tot ondersteunde datatypes. De columnstore is dus een stuk volwassener, en daarmee een stuk bruikbaarder, geworden.

In-memory OLTP database

Als dit artikel zich had moeten beperken tot slechts één feature dan was dat zonder twijfel de in-memory OLTP database geworden. De term database is hier misschien misleidend. In SQL Server 2014 kunt u van elke tabel die u maakt bepalen of dat een klassieke disk-based tabel is, of de nieuwe memory optimized tabel.

De hele manier van hoe SQL Server werkt, met 8kb pagina’s, latches die bijhouden dat er met gegevens op pagina’s wordt gewerkt en locks die ACID verzorgen in multi-user omgevingen, is gebaseerd op hardware van veertig jaar geleden. Geheugen was toen heel schaars en schreeuwend duur. Tegenwoordig zitten veel gegevens weliswaar in geheugen (RAM) maar de manier waarop de engine werkt gaat nog altijd uit van filestructuren en de bijbehorende beperkingen.

In SQL Server 2014 kunt u memory optimized tabellen maken waarbij helemaal geen rekening meer wordt gehouden met file IO. De tabel leeft volledig in geheugen. Het idee van pagina’s wordt dan ook volledig losgelaten. Records worden los opgeslagen en met hash indexes (een nieuwe vorm van indexes die alleen voor memory optimized tabellen geldig is) in pointer-chains opgenomen.

De gegevens in de memory optimized tabel zijn wel gewoon durable (als u daar voor kiest). Dat houdt in dat u niet uw gegevens kwijt bent als uw server omvalt. Er worden delta files op schijf gezet en alle transacties (updates, inserts en deletes) worden ‘gewoon’ gelogd in de transaction log.

Voor concurrency heeft Microsoft gekozen voor een volledig lock en latch free optimistic concurrency control mechanisme. Met andere woorden, verschillende gebruikers die tegelijkertijd werken zitten niet meer op elkaar te wachten. Middels timestamps en meerdere versies van hetzelfde record in het geheugen zorgt Microsoft ervoor dat elke gebruiker de voor hem/haar correcte versie van het record krijgt.

Met memory optimized tabellen kunt u ook gebruik gaan maken van natively compiled stored procedures. Dat zijn stored procedures die tijdens het uitvoeren van CREATE PROCEDURE gecompileerd worden tot machinecode waarna de dll ingeladen wordt in het SQL Server proces. Deze gecompileerde code, die alleen memory optimized tabellen kan benaderen, is vele malen sneller dan ‘gewone’ geïnterpreteerde T-SQL code. Geïnterpreteerde code kan wel beide soorten tabellen gebruiken.

Volgens de marketing whitepapers kunt u met de memory optimized tabellen 10x tot zelfs 50x performance verbetering krijgen. Hoewel er nog de nodige beperkingen zijn, maken dit soort beloftes het zeer de moeite waard om er snel mee te gaan testen!

Tot slot

Er valt uiteraard nog veel meer te zeggen over SQL Server 2014. Bovenstaande is een sneak preview van in het oog springende verbeteringen ten opzichte van wat we al hebben. De genoemde features zijn meer dan genoeg reden om zelf eens met CTP1 te gaan testen.

Meer kennis opdoen over SQL Server?
Als Microsoft partner helpen wij u graag verder! Bekijk ons cursusaanbod of neem contact met ons op.
Vijfhart IT-Opleidingen
088- 542 78 48
info@vijfhart.nl

 

Over de auteur:
Peter ter Braake is freelance docent bij Vijfhart IT Opleidingen
Onderwerpen
Actieve filters: Wis alle filters
Pageloader
PRIVACY VOORWAARDEN

Jouw persoonsgegevens worden opgenomen in onze beschermde database en worden niet aan derden verstrekt. Je stemt hiermee in dat wij jou van onze aanbiedingen op de hoogte houden. In al onze correspondentie zit een afmeldmogelijkheid