SQL 2014 y la posibilidad de extender el Buffer Pool


Esta nueva funcionalidad de SQL Server 2014 es una de las mas interesantes a nivel performance según mi juicio. Todos conocemos que los datos se leen del disco y se almacenan en la famosa cache siendo uno de los componentes claves de la base de datos para poder obtener buenos resultados en performance.

Hasta versiones anteriores a 2014 no se podía controlar el buffer pool para indicarle tamaño, básicamente el mismo era una porción de la memoria RAM instalada.

A partir de SQL 2014 podemos hacer una extensión de este buffer para ampliarlo! obviamente que hay algunas recomendaciones y que no todo es trivial Smile.

Lo primero que debemos tener en cuenta es que la extensión se debe hacer sobre discos de estado solido ya que si lo hacemos sobe otra tecnología corremos serios riesgos.

También destacar que esta funcionalidad esta mas pensada para instalaciones donde la memoria no es muy grande (por ejemplo 32GB de RAM). Si bien se puede aplicar a cualquier entorno es muy probable que con un servidor de 128GB de RAM no sea necesario extender ningún buffer Smile.

El siguiente grafico ilustra como es la arquitectura del buffer pool extension

bufferextension2014

 

Se deben tomar estas consideraciones:

  • El tamaño de la extensión debe ser mayor que la memoria máxima asignada al SQL Server, si por ejemplo tenemos 12GB el archivo de extensión debe ser mayor a 12GB.
  • Se puede alcanzar un máximo de hasta 32 veces el tamaño de max_server_memory pero es recomendado una proporción no mayor a 1:16
  • Antes de implementar esta funcionalidad haga distintas pruebas.
  • Cuando lo tenga implementado en producción evite hacer cambios o desactivarlo.

Recuerde que esta funcionalidad no esta disponible en todas las ediciones de SQL Server.

Ahora veamos unos ejemplos:

ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION ON

(FILENAME = ‘E:BUFFER.BPE’, SIZE = 20GB)

GO

 

— Disable Buffer Pool Extension

ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION OFF

GO