Extensão do pool de buffers
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 de acesso aleatório não volátil (ou seja, unidade de estado sólido) ao pool de buffers do Mecanismo de Banco de Dados para melhorar significativamente a taxa de transferência 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, consulte Os Recursos Suportados pelas Edições do SQL Server 2016.
Benefícios da extensão do buffer pool
O objetivo principal de um banco de dados do SQL Server é armazenar e recuperar dados, portanto, a E/S de disco intensiva é uma característica central 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 serem concluídas, o SQL Server se concentra em tornar a E/S altamente eficiente. O pool de buffers serve como uma fonte primária de alocação de memó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.
Os dados e as páginas de índice são lidos do disco para o pool de buffers e as páginas modificadas (também conhecidas como páginas sujas) são gravadas de volta 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 sujas quentes (ativas) no cache do buffer sejam removidas do cache e gravadas em discos mecânicos e, em seguida, lidas novamente no cache. Essas operações de E/S geralmente são pequenas leituras e gravações aleatórias na ordem de 4 KB a 16 KB de dados. Pequenos padrões aleatórios de E/S incorrem em buscas frequentes, competindo pelo braço do disco mecânico, aumentando a latência de E/S e reduzindo a taxa de transferência de E/S agregada do sistema.
A abordagem típica para resolver esses gargalos de E/S é adicionar mais DRAM ou, alternativamente, mais eixos SAS de alto desempenho. Embora essas opções sejam úteis, elas têm desvantagens significativas: a DRAM é mais cara 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 pelo aumento do consumo de energia e maior probabilidade de falha de componentes.
O recurso de extensão do buffer pool estende o cache do buffer pool com armazenamento não volátil (geralmente SSD). Devido a essa extensão, o pool de buffers pode acomodar um conjunto de trabalho de banco de dados maior, o que força a paginação de E/S entre a RAM e os SSDs. Isso efetivamente descarrega pequenas entradas/saídas aleatórias de discos mecânicos para SSDs. Devido à menor latência e ao melhor desempenho de E/S aleatórias dos 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.
Maior taxa de transferência de E/S aleatória
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
Os termos a seguir são aplicáveis ao recurso de extensão do buffer pool.
Vigência | Descrição |
---|---|
Unidade de estado sólido (SSD) | As unidades de estado sólido armazenam dados na memória (RAM) de forma 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. Assim, o cache do buffer é dividido em páginas de 8 KB. Uma página permanece no cache do buffer até que o gerenciador do buffer precise da área do 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 . O pool de buffers é um recurso global compartilhado por todos os bancos de dados para suas páginas de dados 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 reservada pela extensão do pool de buffers pode ser limitada por outras aplicações quando estas criam uma pressão de memória significativa na máquina. |
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 grava as páginas sujas e as informações do log de transações da memória para o disco e, também, 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 SSD é utilizado como uma extensão do subsistema de memória em vez do subsistema de armazenamento em disco. Ou seja, o ficheiro de extensão do pool de buffers permite que o gestor do pool de buffers use tanto a memória DRAM como a memória NAND-Flash para manter um pool de buffers muito maior de páginas mornas em memória de acesso aleatório não volátil, suportada por SSDs. Isso cria uma hierarquia de cache multinível com nível 1 (L1) como DRAM e nível 2 (L2) como o arquivo de extensão do pool de buffers 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 a seguir fornece uma visão geral da arquitetura de alto nível do pool de buffers em relação a outros componentes do SQL Server.
Quando ativada, a extensão do pool de buffers especifica o tamanho e o caminho do arquivo de cache do pool de buffers no SSD. Esse arquivo é uma extensão contígua de armazenamento no SSD e é configurado estaticamente durante a inicialização da instância do SQL Server. As alterações nos parâmetros de configuração do arquivo só podem ser feitas quando o recurso de extensão do pool de buffers está desativado. Quando a extensão do pool de buffers é desabilitada, todas as definições de configuração relacionadas são removidas do Registro. O arquivo de extensão do pool de buffers é excluído após 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 de pool de buffer de 32 vezes o valor de max server memory
.
O SQL Server Standard edition permite um tamanho máximo de extensão do pool de buffers de quatro vezes o valor de max server memory
.
Melhores práticas
Recomendamos que siga 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 o máximo de benefícios de desempenho.
Defina a extensão do pool de buffers para a proporção entre o tamanho da memória física (
max server memory
) e o tamanho da extensão do pool de buffers de 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çãomax server memory
, consulte Server memory configuration options.Teste completamente a extensão do pool de buffers antes de implementar 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 é 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.
Devolver informações sobre a extensão do pool 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.
Contadores de desempenho estão disponíveis no SQL Server, Buffer Manager Object para controlar as páginas de dados no arquivo de extensão do pool de buffers. Para obter mais informações, consulte os contadores de desempenho da extensão do pool de buffer .
Os seguintes XEvents estão disponíveis.
XEvent | Descrição | Parâmetros |
---|---|---|
sqlserver. 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. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver. 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. | number_page first_page_id first_page_offset initiator_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_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver. buffer_pool_eviction_thresholds_recalculated |
Dispara quando o limite de despejo é calculado. | warm_threshold cold_threshold pages_bypassed_eviction eviction_bypass_reason eviction_bypass_reason_description |
Tarefas relacionadas
Descrição da Tarefa | Artigo |
---|---|
Habilite e configure a extensão do pool de buffers. | ALTERAR A CONFIGURAÇÃO DO SERVIDOR |
Modificar a configuração da extensão do pool de buffers | DE CONFIGURAÇÃO DO ALTER SERVER |
Exibir a configuração da extensão do pool de buffers | sys.dm_os_buffer_pool_extension_configuration |
Monitorizar a extensão do pool de buffers |
sys.dm_os_buffer_descriptors SQL Server, objeto do Buffer Manager |