Pagine

domenica 21 luglio 2013

SQL Server 2014 CTP1 : Buffer Pool Extension

Le attività di read & write da e per i dischi sono le più pesanti che un RDBMS deve sostenere.
La Buffer Pool Extension di SQL 2014 alleggerisce il carico di I/O mantenendo elevato il throughput dei dischi.

SQL Server carica in un'area di memoria RAM detta Buffer Pool tutte le datapages richieste dalle nostre operazioni.
Quelle che hanno subito modifiche (dirty pages) verranno riportate sul disco con una operazione asincrona.
Maggiore è il tempo in cui le pagine risiedono nel buffer pool (page lifetime expetancy) migliori saranno le performance.
Se l'istanza di sql però soffre di memory pressure (Page lifetime molto basso) allora sarà costretta a continue operazioni di lettura dal/scrittura sul disco
delle data pages , siano esse Dirty pages o Clean pages(Pagine che NON hanno subito modifiche).

Per risolvere il problema si potevano seguire 2 strade :
1) Aggiungere RAM
2) Aggiungere dischi ad alta velocità

Ora possiamo anche scegliere la via della Buffer Pool Extension.
In pratica diciamo al buffer pool standard di utilizzare oltre alla Ram anche un file su disco SSD per contenere le datapages richieste dalle operazioni degli utenti.

Con questo comando possiamo abilitarla:

USE MASTER
GO

ALTER SERVER CONFIGURATION 
SET BUFFER POOL EXTENSION ON
    (FILENAME = 'E:\Extension.BPE', SIZE = 32 GB);

Il disco E:\ è un SSD, Extension.BPE è il file contenente l'estensione del buffer pool ed è allocato in modo statico a 32 GB.
La dimensione del file dipende dalla dimensione Max della ram associata a SQL Server.
Microsoft consiglia di rispettare un rapporto di 1:16 tra Max Memory e l'estensione del buffer pool.

D'ora in poi SQL Server utilizzerà questo file in ausilio al buffer pool in RAM.
Per onor di cronaca solo le clean pages, cioè pagine che non hanno subito modifiche, vengono scritte nella buffer pool extension.
Le dirty pages risiedono solo nel buffer pool in ram, questo rende le operazioni di checkpoint più rapide.
Lo spostamento tra il buffer pool e la sua estensione delle clean page viene eseguito dal Buffer Manager.
Questa gestione ibrida del buffer pool consente di migliorare parecchio le operazioni di lettura in ambienti a rischio di memory pressure.

Non si dovrebbe modificare la configurazione del buffer pool extension una volta attivato, soprattutto in produzione.
Disabilitarlo o rimuoverlo potrebbe penalizzare in modo drastico le performance.

Ciao

Luca


Nessun commento:

Posta un commento