Erweiterungen der In.Memory Technologien im SQL Server 2014

Mit dem SQL Server 2012 wurden xVelocity und Columnstore Indexes als In.Memory-Technologien eingeführt. Diese Technik ermöglichte es, häufig abgefragte Tabellen zur Beschleunigung häufiger Datawarehouse-Abfragen spaltenbasiert im Hauptspeicher zu speichern.

Im neuen SQL Server 2014 wurde diese Technologie erweitert: Columnstore Indexe werden in Zukunft nicht mehr nur lesbar sein, sondern auch Schreib-Zugriffe ermöglichen (Quelle). Außerdem werden die In.Memory-Fähigkeiten des SQL Servers um eine Engine, die unter dem Codenamen „Hekaton“ entwickelt wurde, erweitert. Sie stellt eine für OLTP-Prozesse optimierte In.Memory Technologie dar, mit deren Hilfe nicht mehr nur lesende Analyse-Zugriffe aus dem Hauptspeicher erfolgen können, sondern die es ermöglicht, die schreibende transaktionale Last in den Hauptspeicher zu verlagern.

Zu diesem Zweck werden Filegroups angelegt, die als „Hauptspeicheroptimiert“ gekennzeichnet werden und die die Tabellen enthalten, die bei der Erstellung ebenfalls entsprechend markiert wurden. Durch die Verlagerung bestimmter Tabellen in den Speicher kann die Performance bestimmter Prozesse um das bis zu 20-fache beschleunigt werden (Quelle).

Der Vorteil gegenüber Konkurrenzprodukten besteht dabei darin, dass gezielt einzelne Datenbankobjekte in den Speicher verlegt werden können, um so Performance-Bottlenecks gezielt anzugehen. Die Gesamt-Infrastruktur einer Datenbanklösung kann dabei in der Regel bestehen bleiben – bis hin zur Hardware. In.Memory-Lösungen werden dadurch in jeder Größenordnung bezahlbar. Die Syntax für Columnstore-Indexe ist dabei im Vergleich zum SQL Server 2012 unverändert. Neu ist die Syntax für die In.Memory OLTP-Engine. Um die In.Memory-Engine für eine Tabelle zu aktivieren, muss zunächst eine Filegroup angelegt werden, die die entsprechenden Daten enthält:

 

ALTER DATABASE [db] ADD FILEGROUP [inMemoryFg]

CONTAINS MEMORY_OPTIMIZED_DATA


Hinterher muss der Filegroup eine Datei hinzugefügt werden:

 

ALTER DATABASE [db] ADD FILE

(name=’name‘, filename=’c:\data\filename‘)

TO FILEGROUP [inMemoryFg] 


Um nun eine Tabelle in den Hauptspeicher zu verlegen, muss lediglich beim Anlegen ein Hash-Key angelegt werden und markiert werden, dass die Tabelle Hauptspeicher-Optimierte Daten enthält:

 

CREATE TABLE [dbo].[TableName]

([…])

WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY )

 

Indexe auf In.Memory-Tabellen müssen gemeinsam mit der Tabelle erzeugt werden, die vollständige Syntax sowie mehrere Beispiele zur Benutzung von In.Memory-Optimierten Tabellen finden sich im MSDN.

 

Beim Launch-Event der PASS zum SQL Server 2014 wird die ixto GmbH als eines der ersten Unternehmen überhaupt ein Projekt vorstellen, mit dem wir die Leistungsfähigkeit dieser neuen Technologie demonstrieren können.