SQL Server – Mehr Performance durch In Memory Capabilities / Erweiterungen

SQL Server – Mehr Performance durch In Memory Capabilities / Erweiterungen

SQL Server und Datenbankoptimierung durch Nutzung der  In Memory Capabilities / Erweiterungen 

Mit SQL Server wurden bereits ab Version 2012 eine Menge an Möglichkeiten eingeführt, die unter dem Begriff In Memory Erweiterungen den Funktionsumfang diesbezüglich erweitern.

In diesem Artikel soll eine dieser Möglichkeiten vorgestellt werden.

Darf ich vorstellen? Die Buffer Pool Extension.

Die Buffer Pool extension wurde mit SQL Server 2014 eingeführt und es handelt sich dabei um ein SQL Server Enterprise Feature. Schon einmal den Begriff RAM Disk gehört? Die Buffer Pool extension ist so etwas ähnliches.

SQL Server lädt seine Datenseiten in den sogenannten Buffercache.

Wenn SQL Server zum Beispiel eine Select Anfrage erhält, ist es der Idealfall wenn die angefragten Daten, sich im RAM (Buffer Pool  auch Datencache genannt) befinden. Dies wird als logischer Lesevorgang bezeichnet.

Findet SQL Server die Datenseiten nicht im Buffer Pool, so muss er diese aus dem Datenfile(s) der Datenbank nachladen und  dies kostet Zeit. Man nennt dies auch physischen Lesevorgang.

Problematisch wird es, wenn er um Datenseiten nachladen zu können, andere Datenseiten aus dem Bufferpool entfernen muss, da er nicht genug Speicher zur Verfügung hat.

Diese zuvor entfernten Datenseiten, könnten bereits mit der nächsten Abfrage wieder benötigt werden und demzufolge  müsste erneut Platz geschaffen werden, indem erneut die alten Datenseiten der Abfrage zuvor, auch entfernt werden. Es findet eine Art Swapping statt und dies kostet Zeit und drückt die Performance.

Die Lösung wäre dem SQL Server einfach mehr physischen  Speicher (RAM) zu geben, und damit den Bufferpool zu vergrößern.

Da RAM aber wesentlich kostenintensiver ist als Festplatten ermöglicht die Bufferpool Extension einen anderen Weg zu gehen.

Die Bufferpool Extension ermöglicht es, den Bufferpool durch eine Datei die sich auf einer hochperformanten Festplatte befindet zu erweitern.

Datenseiten (Clean Datenseiten – nicht geänderte Datenseiten) werden ebenfalls in dieser Datei gespeichert und müssen nicht entsorgt werden. Ist die Festplatte, die idealer Weise eine SSD Platte sein sollte sehr performant, kann SQL Server schnell auf die Seiten zugreifen um eine Abfrage zu bedienen.

Bufferpool Extension konfigurieren

— Buffer Pool Extension einschalten
ALTER SERVER CONFIGURATION

SET BUFFER POOL EXTENSION ON
(FILENAME = ‚c:\working\bpe.bpe‘, SIZE = 15GB );

 

— Konfigurationseinstellungen der BPE anzeigen
SELECT * FROM sys.dm_os_buffer_pool_extension_configuration;

 

— Buffer Pool Extension Datenseiten überwachen
SELECT * FROM sys.dm_os_buffer_descriptors;

 

— Buffer Pool Extension ausschalten
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;

Der Einsatz dieses Features ist unter gewissen Umständen natürlich eine Überlegung wert, dennoch gilt es bei einer SQL Server/Datenbankoptimierung eine Menge abzuwägen. Unsere Tools und Produkte unterstützen Sie dabei.