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:
http://www.brentozar.com/archive/2014/04/sql-server-2014-buffer-pool-extensions/
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)
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