Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server para Windows
A extensão do buffer pool integra o armazenamento SSD com o Database Engine buffer pool para melhorar o desempenho da base de dados sem incorrer em elevados custos de memória adicional.
A extensão do pool de buffers não está disponível em todas as edições do SQL Server. Para mais informações, consulte Edições e funcionalidades suportadas de SQL Server 2025.
Benefícios da extensão do buffer pool
Como as operações de I/O de disco podem demorar relativamente muito tempo a ser concluídas, são um gargalo de desempenho em muitas cargas de trabalho.
A abordagem típica para reduzir a E/S do disco é adicionar mais memória para uso como cache de dados. Embora útil, a desvantagem desta abordagem é o elevado custo de memória.
A funcionalidade de extensão do buffer pool estende a cache do buffer pool com armazenamento não volátil, como discos SSD locais. Com esta extensão, o pool de buffers pode acomodar um conjunto de trabalho maior na base de dados, substituindo uma parte significativa da E/S remota mais lenta pela E/S local SSD mais rápida. Devido à menor latência e melhor desempenho de I/O dos SSDs, a extensão do pool de buffers pode melhorar o desempenho, especialmente com sistemas de I/O remotos mais lentos.
A lista a seguir descreve os benefícios do recurso de extensão do pool de buffers.
- Aumento da taxa de transferência de E/S
- Latência de E/S reduzida
- Maior taxa de processamento de transações
- Melhor desempenho de leitura com um buffer pool híbrido maior
- Uma arquitetura de cache que pode tirar proveito das unidades de memória de baixo custo presentes e futuras
Conceitos da extensão do buffer pool
Os termos a seguir são aplicáveis ao recurso de extensão do buffer pool.
| Vigência | Descrição |
|---|---|
| Buffer | No Database Engine, um buffer é uma página de 8 KB na memória, do mesmo tamanho que uma página de dados ou índice. Assim, o cache do buffer é dividido em páginas de 8 KB. Uma página permanece na cache de buffer até que o gestor de buffer precise da área de buffer para ler mais dados. Os dados são gravados de volta no disco somente se forem modificados. Essas páginas modificadas na memória são conhecidas como páginas sujas. Uma página é limpa quando é equivalente à imagem do banco de dados no disco. Os dados no cache do buffer podem ser modificados várias vezes antes de serem gravados de volta no disco. |
| pool de buffers | Também chamado de cache de buffer . Todas as bases de dados utilizam o buffer pool como recurso global para as suas páginas de dados em cache. O processo ou sp_configure de arranque reconfigura dinamicamente a instância Database Engine para determinar o tamanho máximo e mínimo da cache do pool de buffer. Este tamanho determina o número máximo de páginas que uma instância pode armazenar em cache no pool de buffer. A pressão da memória externa pode reduzir o tamanho do pool de buffers e limitar a memória que a extensão do pool de buffer pode armazenar em cache. |
| Ponto de Verificação | Um ponto de verificação cria um ponto válido conhecido a partir do qual o Mecanismo de Banco de Dados pode começar a aplicar as alterações contidas no log de transações durante a recuperação após um desligamento ou falha inesperados. Um ponto de verificação escreve as páginas sujas e as informações do registo de transações da memória para o disco. Para obter mais informações, consulte pontos de verificação de banco de dados (SQL Server). |
Arquitetura da extensão do pool de buffers
Ao usar a extensão do buffer pool, pode usar o armazenamento SSD como uma extensão do subsistema de memória, em vez de parte do subsistema do disco. O ficheiro de extensão do conjunto de buffers permite que o gestor do conjunto de buffers utilize tanto DRAM como memória flash NAND para manter, em SSDs, um conjunto de buffers de páginas muito maior.
Esta arquitetura cria uma hierarquia de cache multinível, com o nível 1 (L1) como DRAM e o nível 2 (L2) como ficheiro de extensão do buffer pool no SSD. Apenas as páginas limpas são gravadas no cache L2, o que ajuda a manter a segurança dos dados. O gerenciador de buffer lida com o movimento de páginas limpas entre os caches L1 e L2.
A ilustração seguinte fornece uma visão arquitetónica de alto nível do buffer pool em relação a outros componentes do Database Engine.
Quando ativas a extensão do buffer pool, especificas o tamanho e o caminho do ficheiro de cache do buffer pool no SSD. Este ficheiro é uma extensão contígua de armazenamento no SSD e é configurado estaticamente durante o arranque da instância do Database Engine. Só podes alterar os parâmetros de configuração do ficheiro quando a funcionalidade de extensão do buffer pool está desativada. Quando desativas a extensão do buffer pool, o sistema remove todas as definições de configuração relacionadas do registo. O sistema elimina o ficheiro de extensão do pool de buffers quando o Database Engine é desligado.
Configuração da extensão do conjunto de buffers
Use ALTER SERVER CONFIGURATION para configurar a extensão do buffer pool.
O sistema considera a memória física disponível para a instância do Database Engine no arranque para impor o tamanho mínimo e máximo da extensão do buffer pool.
Tamanho máximo
O tamanho máximo da extensão do buffer pool depende da edição do SQL Server e difere para máquinas físicas e virtuais.
Se configurar um tamanho que exceda o máximo, o Database Engine devolve o erro 864 e não ativa a extensão do buffer pool.
As edições SQL Server Enterprise, Enterprise Developer e Developer suportam até 32 vezes a memória física.
As edições Standard e Standard Developer do SQL Server em máquinas físicas suportam até 4 vezes a memória física.
Até um máximo de 512 GB no SQL Server 2022 (16.x) e versões anteriores.
Até um máximo de 1 TB no SQL Server 2025 (17.x) e versões posteriores.
As edições Standard e Standard Developer do SQL Server em máquinas virtuais suportam até 16 vezes a memória física.
Para mais informações, consulte Edições e funcionalidades suportadas de SQL Server 2025.
Tamanho mínimo
O tamanho da extensão do pool de buffer deve ser maior do que o menor dos valores de memória física e de memória máxima do servidor (MB ). Se o tamanho configurado for inferior a este mínimo, o Database Engine gera o erro 868. Se o tamanho configurado for inferior a este mínimo no arranque da instância, o erro 861 é registado e a extensão do buffer pool não está ativada.
Comportamento das alterações de configuração
Podes aumentar max server memory (MB) para um valor superior ao tamanho da extensão do buffer pool enquanto a extensão estiver ativada. O Database Engine regista uma mensagem informativa (erro 5866) e aplica a alteração. No entanto, como o novo valor viola o requisito de tamanho mínimo, a extensão do buffer pool é desativada na próxima vez que a instância reiniciar.
Se ativar a extensão do buffer pool com um tamanho inferior a max server memory (MB), a operação falha com o erro 868.
Boas práticas para extensão de pools de buffer
Considere as seguintes práticas recomendadas:
- Depois de ativar a extensão do buffer pool pela primeira vez, reinicie a instância do Database Engine para obter os máximos benefícios de desempenho.
- Defina a extensão do buffer pool de modo que a razão entre o tamanho da memória física e o tamanho da extensão do buffer pool seja 1:16 ou menos. Uma relação mais baixa na faixa de 1:4 a 1:8 pode ser ideal. Para obter informações sobre como definir a opção
max server memory (MB), consulte Server memory configuration options. - Teste cuidadosamente a extensão do pool de buffers antes de a implementar num ambiente de produção. Uma vez em produção, evite fazer alterações de configuração no arquivo ou desativar o recurso. Essas atividades podem ter um efeito negativo no desempenho do servidor porque o pool de buffers é significativamente reduzido em tamanho quando o recurso é desativado. Quando desabilitada, a memória usada para dar suporte ao recurso não é recuperada até que a instância do SQL Server seja reiniciada. No entanto, se o recurso for reativado, a memória será reutilizada sem reiniciar a instância.
Monitorizar a extensão do conjunto de buffers
Você pode usar as seguintes exibições de gerenciamento dinâmico para exibir a configuração da extensão do pool de buffers e retornar informações sobre as páginas de dados na extensão.
Os contadores de desempenho estão disponíveis no objeto SQL Server, Buffer Manager para monitorizar as páginas de dados no ficheiro de extensão do agrupamento de memória intermédia. Para mais informações, consulte SQL Server, objeto Buffer Manager.
Os seguintes eventos estendidos estão disponíveis para monitorizar a extensão do buffer pool em profundidade.
| Event | Descrição |
|---|---|
buffer_pool_extension_pages_written |
É acionado quando uma página ou grupo de páginas é removido do pool de buffers e gravado no arquivo de extensão do buffer pool. |
buffer_pool_extension_pages_read |
É acionado quando uma página é lida do arquivo de extensão do pool de buffers para o pool de buffers. |
buffer_pool_extension_pages_evicted |
É acionado quando uma página é removida do arquivo de extensão do pool de buffers. |
buffer_pool_eviction_thresholds_recalculated |
Incêndios quando os limiares de despejo são recalculados. |