quinta-feira, 16 de julho de 2015

Buffer Pool Extension (BPE)


Antes de escrever sobre Buffer Pool Extension, nova funcionalidade do SQL Server 2014, preciso fornecer o conhecimento necessário para percebermos os benefícios e cenários indicados de uso deste novo recurso.

Como o SQL Server acessa os dados

O SQL Server sempre lê os dados da memória.  Quando o usuário executa um comando SELECT o SQL Server verifica se a informação já se encontra na memória, se não estiver acessa o disco e carrega para memória.  Neste momento, as páginas na memória estão idênticas as páginas no disco recebendo a denominação de “Clean Pages” (Páginas Limpas).  Quando o usuário executa um comando de alteração dos dados no banco, o mesmo processo de levar as páginas para memória ocorre, sendo alteradas APENAS na memória.  Estas páginas alteradas na memória recebem a denominação de Dirty Pages (Páginas Sujas). 

De tempos em tempos um processo chamado de “Checkpoint” se encarrega de atualizar as páginas no disco a partir da Páginas Sujas (Dirty Pages) da memória.

Fica clara a importância de ter uma boa quantidade de memória para o SQL Server, não é?  Quando temos menos memória que o necessário para manter as páginas mais acessadas em memória, o SQL Server é obrigado a acessar constantemente o disco para atender as requisições dos usuários, com consequente perda de desempenho.

Buffer Pool Extension (BPE)

Já que memória é tão importante para o SQL Server, e com o surgimento dos discos SSD (Solid-state drive), o SQL Server 2014 nos dá a possibilidade de expandir o Buffer de memória para os discos SSD.  Claro que aumentar a memória RAM fornece um resultado muito melhor, mas estender o Buffer para discos SSD é melhor que trabalhar com pouca RAM!  Veja gráfico comparativo abaixo:


Retirado do artigo em:

Existem algumas restrições quanto ao uso do BPE:
·         Apenas Paginas Limpas (Clean Pages) podem estar no BPE, Páginas Sujas só na memória RAM.
·         BPE só SQL Server Enterprise, Standard ou Business Intelligence, todos 64 bits.
·         Necessária permissão ALTER SERVER STATE para habilitar BPE.
·         Limite máximo de 32 vezes o valor do valor de MaxServerMemory, sendo o indicado pela Microsoft entre 4 a 8 vezes.

Habilitando BPE

Para habilitar o Buffer Pool Extension (BPE) basta utilizar o script abaixo, lembrando de habilitar somente em volumes SSD.

USE Master
go
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'S:\MyCache.bpe', SIZE = 10GB)

Para desabilitar BPE:

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF

As visões de sistema abaixo retornam informações do Buffer Pool Extension, quando habilitado:

SELECT * FROM sys.dm_os_buffer_pool_extension_configuration

SELECT * FROM sys.dm_os_buffer_descriptors

Até o próximo post.

Saudações Tricolores,
Landry

Nenhum comentário: