Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Buffer Pool Extension (BPE)

Última atualização: Aug 20, 2026

O recurso Buffer Pool Extension (BPE) para instâncias RDS MySQL com discos de alto desempenho melhora a eficiência de E/S do disco e a capacidade de resposta do sistema. Essa funcionalidade estende o buffer pool para acelerar o cache, aumentando o desempenho geral de leitura e gravação da instância RDS. Este tópico descreve o funcionamento do BPE, seus casos de uso e benchmarks de desempenho.

Contexto

Ler dados do disco para a memória e gravar dados da memória para o disco são operações comuns em bancos de dados. Comparada às operações em memória, a E/S de disco é significativamente mais lenta e demorada. Em cargas de trabalho com solicitações de dados frequentes ou em grande escala, a E/S de disco pode se tornar um grande gargalo de desempenho.

Para resolver essa questão, o ApsaraDB RDS for MySQL oferece uma nova opção de armazenamento: discos de alto desempenho. Esses discos são compatíveis com all ESSD features e utilizam uma arquitetura de armazenamento em três camadas para gerenciar diferentes tipos de dados e cache. Os discos de alto desempenho também introduzem o recurso de pico de E/S (I/O burst) e o Buffer Pool Extension (BPE) para melhorar ainda mais o desempenho de E/S da instância RDS.

Introdução

Visão geral

O buffer pool é uma área de memória que armazena dados dos discos em cache. Quando o banco de dados precisa ler ou gravar um bloco de dados, ele verifica primeiro o buffer pool:

  • Se o bloco de dados estiver no buffer pool, o banco de dados o lê ou grava diretamente da memória.

  • Caso o bloco não esteja no buffer pool, o banco de dados o lê do disco ou o grava no disco e, em seguida, o copia para o buffer pool.

Esse mecanismo de cache reduz efetivamente as operações de E/S de disco e melhora o desempenho de E/S da instância. No entanto, o tamanho do buffer pool é limitado pela memória do sistema. Se a memória for insuficiente, o tamanho restrito do buffer pool pode impactar negativamente o desempenho de E/S.

O RDS MySQL introduz o recurso Buffer Pool Extension (BPE) para expandir o tamanho efetivo do buffer pool. Ao aproveitar o kernel do mecanismo RDS, o BPE melhora o desempenho geral de leitura e gravação do RDS MySQL. Isso permite que a instância execute mais comandos de leitura e gravação em um determinado período, aumentando a eficiência da E/S de disco e a capacidade de resposta do sistema, acelerando assim o cache.

Benefícios

O recurso BPE cria uma estrutura de armazenamento em três camadas que aproveita a mídia de armazenamento subjacente da Alibaba Cloud para melhorar o desempenho de E/S da instância em diversos cenários e requisitos de armazenamento de dados:

  • Melhoria no desempenho de leitura/gravação e redução no tempo de execução de SQL

    • A extensão do buffer pool armazena operações de leitura em cache, aumentando significativamente a velocidade de acesso às páginas de dados e reduzindo o tempo de execução de consultas SQL.

    • Essa extensão reduz drasticamente a frequência de acesso aos arquivos de dados no disco de alto desempenho da instância, diminuindo o uso da largura de banda do disco.

  • Maior estabilidade da instância

    O disco que hospeda a extensão do buffer pool possui latência inferior à de um disco de alto desempenho. Esse design reduz significativamente o impacto da variação de E/S do disco de alto desempenho nas operações do banco de dados, melhorando a estabilidade.

Nota

No Centro de Experiência da Solução Buffer Pool Extension (BPE), crie um ambiente RDS real e observe resultados de testes de estresse em tempo real com e sem o BPE ativado. Esse recurso é gratuito. Para mais informações, consulte Observação de Desempenho da Aceleração de E/S de Disco de Alto Desempenho (BPE) do RDS.

Custo-benefício

O recurso Buffer Pool Extension (BPE) é gratuito para instâncias RDS MySQL compatíveis, sem necessidade de alterações na aplicação.

Melhore significativamente o desempenho de E/S da instância sem alterar custos ou lógica de negócios. Por exemplo, uma instância RDS MySQL na Edição de Alta Disponibilidade, usando um tipo de instância de uso geral com 8 vCPUs e 16 GB de memória, pode alcançar um aumento substancial no QPS de leitura e gravação. Para detalhes, consulte Teste de desempenho.

Funcionamento

O recurso Buffer Pool Extension (BPE) para discos de alto desempenho utiliza tecnologia de extensão de buffer pool para impulsionar o desempenho de ESSDs sem custo adicional. Ao separar dados quentes e frios, esse recurso estende o buffer pool do InnoDB. Ele armazena páginas de dados mornos na extensão do buffer pool, permitindo que o InnoDB utilize múltiplas mídias de armazenamento de forma flexível e alcance um QPS mais elevado.

Arquitetura

A figura a seguir mostra a arquitetura de implantação do BPE.

c2a2493768b021f69aa2ff9d5011102b

A extensão do buffer pool utiliza discos de alta velocidade como camada de cache entre a memória e o disco de alto desempenho. Esses discos de alta velocidade oferecem menor latência de E/S e desempenho superior em comparação aos discos de alto desempenho.

Nota
  • O disco de alta velocidade é usado apenas para cache.

  • Os arquivos de dados, binlog e redo são armazenados no disco de alto desempenho.

Ao estender o buffer pool do InnoDB, o sistema consegue armazenar páginas de dados do buffer pool principal na extensão do buffer pool, permitindo que o InnoDB utilize flexivelmente múltiplas mídias de cache.

Implementação

Ao ativar o recurso Buffer Pool Extension (BPE), o sistema armazena as páginas de dados da instância em cache na extensão do buffer pool no disco de alta velocidade.

Nota

Todas as páginas de dados armazenadas na extensão do buffer pool são páginas limpas, ou seja, estão consistentes com os dados no arquivo de dados do disco de alto desempenho.

Ao ler uma página de dados, o sistema segue estas etapas:

  1. Um cliente inicia uma solicitação para ler uma página de dados.

  2. O sistema verifica o buffer pool na memória em busca da página de dados solicitada.

    • Se a página for encontrada (cache hit), o sistema a retorna ao cliente e o processo termina.

    • Caso a página não seja encontrada (cache miss), o processo continua para a próxima etapa.

  3. O sistema verifica a extensão do buffer pool no disco de alta velocidade em busca da página de dados.

    • Se a página for encontrada, o sistema a copia para o buffer pool na memória e a retorna ao cliente. O processo termina.

    • Se a página não for encontrada, o processo continua para a próxima etapa.

  4. O sistema lê a página de dados do arquivo de dados no disco de alto desempenho. Em seguida, copia a página para o buffer pool na memória e a retorna ao cliente.

  5. A operação de leitura é concluída.

Aplicabilidade

  • Mecanismo: RDS MySQL

  • Versão: MySQL 8.4 ou MySQL 8.0 com versão secundária do mecanismo 20230914 ou posterior

  • Edição: Edição de Alta Disponibilidade ou Edição Cluster RDS

  • Categoria: Standard Edition

  • Família de instâncias: uso geral

  • Regiões e zonas: (Para disponibilidade, consulte o console. Esta lista serve apenas como referência.)

    Região

    Zona

    China (Chengdu)

    Zone B

    China (Beijing)

    Zone I

    China (Shanghai)

    Zone M

    Zone N

    China (Hangzhou)

    Zone J

Faturamento

O recurso Buffer Pool Extension (BPE) é gratuito para instâncias RDS MySQL de uso geral que utilizam discos de alto desempenho.

Precauções

  • A perda de dados na extensão do buffer pool não afeta seus dados comerciais, pois eles são armazenados de forma durável no disco de dados. A instância continua operando normalmente.

  • Ativar o recurso BPE aloca uma pequena quantidade de memória (4% do buffer_pool_size). Portanto, o valor padrão do buffer_pool_size é automaticamente reduzido em 4%. Caso precise modificar o buffer_pool_size posteriormente, ajuste-o com base nas métricas de uso de memória.

  • Após ativar ou desativar o recurso BPE, a instância fica indisponível por cerca de 15 segundos. Recomendamos realizar essa operação fora dos horários de pico.

  • A ativação do recurso BPE proporciona uma melhoria significativa de desempenho. O efeito é mais perceptível em tipos de instância maiores. Por exemplo, uma instância RDS MySQL de uso geral com 8 vCPUs e 16 GB na Edição de Alta Disponibilidade (Standard) pode alcançar uma melhoria de desempenho de até 103%.

Gerenciamento do BPE

Ativar o BPE

  1. Acesse a página Instâncias, selecione a região da instância e clique em ID da instância.

  2. Na seção Basic Information, à direita de Storage Type, clique em Configure Premium ESSD. Na caixa de diálogo exibida, ative a chave Buffer Pool Extension (BPE).

Desativar o BPE

  1. Acesse a página Instâncias, selecione a região da instância e clique em ID da instância.

  2. Na seção Basic Information, à direita de Storage Type, clique em Configure Premium ESSD. Na caixa de diálogo exibida, desative a chave Buffer Pool Extension (BPE).

Teste de desempenho

Preparação do teste

  • Método de teste: Execute operações de leitura e gravação em uma instância das mesmas especificações para comparar o QPS com e sem o recurso BPE ativado.

  • Tamanho dos dados de teste: 300 GB

  • Ferramenta de teste: Sysbench (Para mais informações, consulte a documentação oficial do Sysbench.)

    Nota

    Primeiro, create an ECS instance. A ferramenta de teste neste tópico está instalada em uma instância ECS.

  • Instâncias de teste: Prepare duas instâncias RDS MySQL na Edição de Alta Disponibilidade com tipo de instância de uso geral. Uma instância deve ter 4 vCPUs e 8 GB de memória, e a outra, 8 vCPUs e 16 GB de memória. Os testes são executados em cada instância primeiro com o BPE desativado e, em seguida, com o BPE ativado.

    Edição

    Código do tipo de instância

    vCPUs e memória

    Edição de Alta Disponibilidade

    mysql.n2.large.xc

    4 vCPUs, 8 GB

    Edição de Alta Disponibilidade

    mysql.n2.xlarge.xc

    8 vCPUs, 16 GB

Método de teste

Este tópico usa o CentOS como exemplo para o teste de desempenho. Para instalar e testar em outro sistema operacional, consulte a documentação oficial do Sysbench.

Instalar o Sysbench

Execute os seguintes comandos para instalar o Sysbench.

git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 0.5

yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel

./autogen.sh
./configure
make -j
make install
 

Testar o desempenho de QPS da instância

Parâmetros

A tabela a seguir descreve os parâmetros utilizados neste teste.

Parâmetro

Descrição

--tables

O número de tabelas.

--table_size

O número de linhas em cada tabela.

--rand-type

O tipo de distribuição de números aleatórios.

--rand-spec-pct

A porcentagem de valores considerados "especiais" para a distribuição aleatória especificada.

--threads

O número de threads simultâneas.

--time

A duração do teste, em segundos.

Testar desempenho de leitura

  1. Prepare os dados: Execute o seguinte comando para preparar 300 GB de dados (30 tabelas com 40 milhões de linhas cada).

    sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
  2. Execute o teste de leitura: Utilize o comando abaixo para testar o desempenho de leitura da instância.

    sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run

Testar desempenho de gravação

  1. Prepare os dados: Execute o seguinte comando para preparar 300 GB de dados (30 tabelas com 40 milhões de linhas cada).

    sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
  2. Execute o teste de gravação: Utilize o comando abaixo para testar o desempenho de gravação da instância.

    sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run

Testar desempenho de leitura/gravação

  1. Prepare os dados: Execute o seguinte comando para preparar 300 GB de dados (30 tabelas com 40 milhões de linhas cada).

    sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
  2. Execute o teste de leitura/gravação: Utilize o comando abaixo para testar o desempenho misto de leitura e gravação da instância.

    sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run

Resultados do teste

  • Resultados para uma instância RDS MySQL na Edição de Alta Disponibilidade (Standard) usando tipo de instância de uso geral com 4 vCPUs e 8 GB de memória:

    • Desempenho de leitura: O QPS permanece praticamente inalterado com o BPE ativado.

    • Desempenho de gravação: O QPS aumenta 30% com o BPE ativado.

    • Desempenho de leitura/gravação: O QPS aumenta 26% com o BPE ativado.

    image.png

  • Resultados para uma instância RDS MySQL na Edição de Alta Disponibilidade (Standard) usando tipo de instância de uso geral com 8 vCPUs e 16 GB de memória:

    • Desempenho de leitura: O QPS aumenta 80% com o BPE ativado.

    • Desempenho de gravação: O QPS aumenta 33% com o BPE ativado.

    • Desempenho de leitura/gravação: O QPS aumenta 103% com o BPE ativado.

    image.png

Documentos relacionados