[SQL Server] Mémoire: petite introduction au Buffer Pool Extension

Ce billet présente une nouvelle fonctionnalité de SQL Server 2014 : le Buffer Pool Extension (BPE).

Rappel sur le Buffer Pool

A titre de rappel, le Buffer Pool (ou Buffer Cache) est un type de mémoire de niveau intermédiaire qui est utilisé par l’instance SQL Server comme source de mémoire pour ses données. Le Buffer Pool est très utile au sens qu’il permet d’améliorer les performances du moteur SQL en permettant l’accès des données en mémoire.

 

Qu’est-ce que le Buffer Pool Extension (BPE) ?

Le Buffer Pool Extension (ou BPE) est une fonctionnalité apparaissant à partir de SQL Server 2014, et permettant d’offrir un gain potentiel en matière de performances (temps I/O, notamment) pour les applications connectées à des bases de données. Sa particularité repose sur le fait qu’il offre la possibilité d’étendre la taille du Buffer Pool d’une instance SQL Server vers un fichier stocké au sein d’un disque non-volatile (cas d’un SSD, qui offre de bien meilleures performances I/O).

Quand le BPE est activé, le Buffer Pool est divisé en 2 niveaux (ou parties) :

  • Le 1er niveau (appelé également L1, pour Level 1) est en RAM et peut stocker aussi bien les pages sales que celles « propres ».
  • Le second niveau (L2) est sur disque, et ne stockera que les pages « propres ».

C’est le Buffer Manager qui gère les différents mouvements de pages inter-niveaux.

 

Mise en pratique de l’utilisation du Buffer Pool Extension (BPE)

Activation du BPE

L’activation du BPE est simple. Afin de respecter les bonnes pratiques d’administration de SQL Server, il est important de vérifier au préalable la valeur du Max server memory :

  • Soit via une simple requête :
USE master
GO
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'max server memory (MB)'
GO
  • Soit via l’interface SQL Server Management Studio des propriétés de l’instance concernée : Propriétés de l’instance (clic-droit sur le nom de l’instance, au sein de l’explorateur d’objets)> Mémoire (ou Memory).

L’activation du BPE se fait comme suit :

USE master
GO
ALTER SERVER CONFIGURATION
	SET BUFFER POOL EXTENSION ON
	(FILENAME ='D:\SQL Server\Memory\SQLBP.BPE', SIZE = 12 GB)
GO

La requête ci-dessous permet de créer un BPE d’une taille de l’ordre de 12 Go, via la création d’un fichier BPE. Vous pouvez jeter un coup d’œil ici, pour en savoir plus sur ALTER SERVER CONFIGURATION qui permet de configurer les paramètres généraux d’une instance active.

Pour savoir si le BPE a été activé ou non, l’utilisation de la DMV sys.dm_os_buffer_pool_extension_configuration fait amplement l’affaire :


Désactivation du BPE

La désactivation du BPE est on ne peut plus simple :

USE master
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF
GO

Une relance de notre DMV vue dans la sous-section précédente donnera le résultat suivant :

 

Modification de la taille du BPE

Supposons que l’on souhaite redimensionner le BPE. Pour ce faire, il suffit simplement de le désactiver puis le de réactiver avec la nouvelle taille spécifiée :

USE master
GO
ALTER SERVER CONFIGURATION
	SET BUFFER POOL EXTENSION OFF
GO
ALTER SERVER CONFIGURATION
	SET BUFFER POOL EXTENSION ON
	(FILENAME ='D:\SQL Server\Memory\SQLBP.BPE', SIZE = 16 GB)
GO

La désactivation au préalable est nécessaire, sans quoi le message suivant sera affiché :

Une petite vérification « DMVienne » donne les informations suivantes qui confirment la modification de l’extension de 12 à 16 Go :

 

Recommandations d’utilisation

Bien que le BPE permette d’élargir les capacités du Buffer Pool, il possède quelques limitations non-négligeables :

  • Disponible seulement à partir de SQL Server 2014, et pour les éditions Standard, Business Intelligence et Enterprise, seulement.
  • Seulement limité aux architectures 64 bits.
  • Plus adapté pour les applications OLTP soumises à de forts accès en lecture, moins pour les applications OLAP.
  • La taille maximale du BPE supportable correspond à 32 fois la RAM du serveur (ou le Max server memory de l’instance). En règle générale, il est recommandé de fournir une taille de BPE équivalente de 4 à 8 fois la taille du Max server memory.

 

Pour aller plus loin…

Gardez œil ici pour d’autres billets autour de la mémoire.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s