Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Introduzida no SQL Server 2014 (12.x), a extensão do pool de buffers fornece a integração perfeita de uma extensão de memória não volátil (ou seja, unidade de estado sólido) com o pool de buffers do Mecanismo de Banco de Dados para melhorar significativamente o desempenho de E/S. A extensão do pool de buffers não está disponível em todas as edições do SQL Server. Para obter mais informações, confira Edições e recursos com suporte do SQL Server 2022.
Benefícios da extensão do pool de buffers
A principal finalidade de um banco de dados do SQL Server é armazenar e recuperar dados, de modo que a intensa E/S de disco é uma característica importante do Mecanismo de Banco de Dados. Como as operações de E/S de disco podem consumir muitos recursos e levar um tempo relativamente longo para terminar, o SQL Server se concentra em tornar a E/S altamente eficiente. O pool de buffers serve como fonte de alocação de memória primária do SQL Server. O gerenciamento de buffer é um componente fundamental para alcançar essa eficiência. O componente de gerenciamento de buffer consiste em dois mecanismos: o gerenciador de buffer, para acessar e atualizar páginas de banco de dados, e o pool de buffers, para reduzir a E/S do arquivo de banco de dados.
As páginas de dados e de índice são lidas do disco para o pool de buffers, e as páginas modificadas (também conhecidas como páginas sujas) são gravadas novamente no disco. A pressão de memória no servidor e nos pontos de verificação do banco de dados faz com que as páginas quentes (ativas) e sujas no cache do buffer sejam descarregadas do cache, gravadas nos discos mecânicos e, em seguida, lidas de volta no cache. Essas operações de E/S normalmente são pequenas leituras aleatórias e gravações na ordem de 4 KB a 16 KB de dados. Os padrões pequenos de E/S aleatória causam buscas frequentes, competindo pelo braço mecânico do disco rígido, aumentando a latência de E/S e reduzindo a taxa de transferência agregada de E/S do sistema.
A abordagem comum para resolver esses gargalos de E/S é adicionar mais DRAM, ou como alternativa, a adição de eixos SAS de alto desempenho. Embora essas opções sejam úteis, elas têm desvantagens significativas: o DRAM é mais caro do que as unidades de armazenamento de dados e a adição de eixos aumenta as despesas de capital na aquisição de hardware e aumenta os custos operacionais com o aumento do consumo de energia e o aumento da probabilidade de falha do componente.
A funcionalidade de extensão do pool de buffers amplia o cache do pool com armazenamento não volátil (geralmente, SSD). Graças a essa extensão, o pool de buffers pode acomodar um conjunto de trabalho maior de banco de dados, o que força a paginação de E/S entre a RAM e as SSDs. Isso desloca eficazmente pequenas operações de entrada/saída (E/S) aleatórias dos discos mecânicos para os SSDs. Devido à latência mais baixa e ao melhor desempenho de E/S aleatória das SSDs, a extensão do pool de buffers melhora significativamente a taxa de transferência de E/S.
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 aleatória
Redução da latência de E/S
Aumento da taxa de transferência de transações
Melhoria do desempenho de leitura com um pool de buffers híbrido maior
Uma arquitetura de cache que pode se beneficiar das unidades de memória de baixo custo presentes e futuras
Conceitos
Os termos a seguir são aplicáveis ao recurso de extensão do pool de buffers.
| Prazo | Descrição |
|---|---|
| SSD (unidade de estado sólido) | As unidades de estado sólido armazenam dados na memória (RAM) de maneira persistente. Para obter mais informações, consulte a definição da Wikipédia. |
| Buffer | No SQL Server, um buffer é uma página de 8 KB na memória, do mesmo tamanho de uma página de dados ou índice. Portanto, o cache do buffer é dividido em páginas de 8 KB. Uma página permanece no cache do buffer até que o gerenciador de buffer precise da área de buffer para ler mais dados. Os dados serão gravados em 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 podem ser modificados no cache do buffer várias vezes antes de serem gravados no disco. |
| Pool de buffers | Também chamado cache de buffer. O pool de buffers é um recurso global compartilhado por todos os bancos de dados para suas páginas de dados armazenadas em cache. O tamanho máximo e mínimo do cache do pool de buffers é determinado durante a inicialização ou quando a instância do SQL Server é reconfigurada dinamicamente com sp_configure. Esse tamanho determina o número máximo de páginas que podem ser armazenadas em cache no pool de buffers a qualquer momento na instância em execução. A memória máxima que pode ser alocada pela extensão de pool de buffers pode ser limitada por outros aplicativos em execução no computador, caso esses aplicativos criem pressão significativa sobre a memória. |
| Checkpoint | Um ponto de verificação cria um bom ponto 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 uma pane ou um desligamento inesperado. Um ponto de verificação grava as páginas sujas e as informações do log de transações da memória no disco e, além disso, registra informações sobre o log de transações. Para obter mais informações, consulte Pontos de verificação de banco de dados (SQL Server). |
Detalhes
O armazenamento de SSD é usado como uma extensão para o subsistema de memória, e não para o subsistema de armazenamento de disco. Isto é, o arquivo de extensão do pool de buffers permite que o gerenciador do pool de buffers use a memória DRAM e flash NAND para manter um pool de buffers muito maior de páginas mornas em memória não volátil com suporte de SSDs. Isso cria uma hierarquia de cache de vários níveis com o nível 1 (L1) como a DRAM e o nível 2 (L2) como o arquivo de extensão do pool de buffers na SSD. Somente páginas limpas são gravadas no cache L2, o que ajuda a manter a segurança dos dados. O gerenciador de buffer manipula a movimentação de páginas limpas entre os caches L1 e L2.
A ilustração a seguir fornece uma visão geral arquitetônica de alto nível do pool de buffers em relação a outros componentes do SQL Server .
Quando habilitada, a extensão do pool de buffers especifica o tamanho e o caminho do arquivo de cache do pool de buffers na SSD. Esse arquivo é uma extensão contígua de armazenamento na SSD e é configurado estaticamente durante a inicialização da instância do SQL Server. As alterações nos parâmetros da configuração do arquivo poderão ser realizadas somente quando o recurso de extensão do pool de buffers estiver desabilitado. Quando a extensão do pool de buffers é desabilitada, todas as definições da configuração relacionadas são removidas do Registro. O arquivo de extensão do pool de buffers é excluído durante o desligamento da instância do SQL Server.
Limitações de capacidade
O SQL Server Enterprise Edition permite um tamanho máximo de extensão do pool de buffers de 32 vezes o valor de max server memory (MB).
A edição Standard do SQL Server permite um tamanho máximo de extensão do pool de buffers de quatro vezes o valor de max server memory (MB).
Práticas recomendadas
É recomendável seguir estas práticas recomendadas.
Depois de habilitar a extensão do pool de buffers pela primeira vez, reinicie a instância do SQL Server para obter os benefícios máximos de desempenho.
Defina a extensão do pool de buffers para que a taxa entre o tamanho da memória física (
max server memory (MB)) e o tamanho da extensão do pool de buffers seja igual a 1:16 ou menor. Uma taxa menor no intervalo de 1:4 a 1:8 pode ser ideal. Para obter informações sobre como definir a opçãomax server memory (MB), consulte as opções de configuração de memória do servidor.Teste toda a extensão do pool de buffers antes da implementação em um 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 é desabilitado. Quando desabilitada, a memória usada para dar suporte ao recurso não será recuperada até que a instância do SQL Server seja reiniciada. No entanto, se o recurso estiver habilitado novamente, a memória será reutilizada sem reiniciar a instância.
Informações de retorno sobre a extensão do pool de buffers
Você pode usar as exibições de gerenciamento dinâmico a seguir para exibir a configuração da extensão do pool de buffers e informações de retorno sobre as páginas de dados na extensão.
Os contadores de desempenho estão disponíveis no SQL Server, objeto Buffer Manager, para rastrear as páginas de dados no arquivo de extensão do pool de buffers. Para obter mais informações, consulte contadores de desempenho da extensão do pool de buffers.
Os XEvents a seguir estão disponíveis.
| XEvent | Descrição | Parâmetros |
|---|---|---|
sqlserver.buffer_pool_extension_pages_written |
É acionado quando uma página ou um grupo de páginas é removido do pool de buffers e gravado no arquivo de extensão do pool de buffers. | number_pagefirst_page_idfirst_page_offsetinitiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_read |
Aciona-se quando uma página é lida do arquivo de extensão da memória intermediária para a própria memória intermediária. | number_pagefirst_page_idfirst_page_offsetinitiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_evicted |
É acionado quando uma página é removida do arquivo de extensão do pool de buffers. | number_pagefirst_page_idfirst_page_offsetinitiator_numa_node_id |
sqlserver.buffer_pool_eviction_thresholds_recalculated |
É acionado quando o limite de remoção é calculado. | warm_thresholdcold_thresholdpages_bypassed_evictioneviction_bypass_reasoneviction_bypass_reason_description |