Todos os produtos
Search
Central de documentação

PolarDB:Warm Buffer Pool

Última atualização: Jun 28, 2026

Ao reiniciar um nó primário do PolarDB for MySQL, o buffer pool do InnoDB inicia vazio. O banco de dados recarrega páginas do armazenamento sob demanda, degradando o desempenho até o repovoamento do pool. Esse processo pode levar minutos em cenários com alta carga de escrita ou grandes volumes de transações. O Warm Buffer Pool elimina esse período de inicialização a frio ao armazenar o buffer pool na memória compartilhada do Linux, independentemente do processo de banco de dados. O buffer pool persiste entre reinicializações e fica disponível imediatamente quando o nó volta a operar.

Pré-requisitos

Antes de ativar o Warm Buffer Pool, certifique-se de que:

  • O cluster PolarDB executa o MySQL 8.0.2 com versão de revisão 8.0.2.1.0 ou posterior. Para verificar a versão, consulte a seção "Query the engine version" em Versões do mecanismo.

  • O recurso de compactação de tabelas está desativado.

Como funciona

O Warm Buffer Pool armazena o buffer pool do InnoDB na memória compartilhada do Linux, em vez da memória do processo. Como o buffer pool é independente do processo do PolarDB, ele sobrevive a reinicializações.

warmbp.jpg

Comportamentos principais:

  • Persistência entre reinicializações: A memória compartilhada armazena os dados de controle do buffer pool, os metadados das páginas e os dados das páginas. Ao iniciar, o PolarDB se conecta ao buffer pool existente na memória compartilhada, em vez de alocar um novo.

  • Recuperação de falhas: Após uma falha no nó, o PolarDB detecta e corrige inconsistências no buffer pool da memória compartilhada antes de se conectar a ele.

  • Desligamento limpo mais rápido: Em uma reinicialização manual, o PolarDB salva o estado principal da transação antes de desligar. Isso ignora tanto a reversão durante o desligamento quanto a restauração na inicialização, reduzindo significativamente o tempo de reinicialização.

  • Operações de O&M: A ferramenta mysqlshm permite consultar configurações e liberar buffer pools da memória compartilhada pela linha de comando.

Benefícios

Reinicializações mais rápidas

O Warm Buffer Pool reduz o tempo de reinicialização do nó primário de minutos para segundos. A melhoria é mais evidente quando o nó primário possui um buffer pool grande e lida com cargas intensas de escrita ou transações volumosas.

Desempenho consistente após reinicialização

Como o buffer pool permanece na memória compartilhada, as páginas acessadas recentemente continuam disponíveis após a reinicialização. Não há período de aquecimento nem queda de desempenho.

A figura a seguir mostra o throughput durante uma reinicialização com um buffer pool de 50 GB, utilizando cargas de trabalho Sysbench OLTP somente leitura.

image.png

  • Sem o Warm Buffer Pool (linha laranja): o throughput cai para 2% do normal logo após a reinicialização e leva cerca de 200 segundos para se recuperar.

  • Com o Warm Buffer Pool (linha azul): o throughput não é afetado durante a reinicialização.

Ative o Warm Buffer Pool

Para uma reinicialização manual

  1. Defina innodb_buf_shm_key com um valor diferente de zero em my.cnf e inicie o cluster PolarDB.

  2. Verifique se o recurso está ativo:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    O valor deve ser Allocate from shared memory.

  3. Defina innodb_fast_shutdown como 3:

    SET GLOBAL innodb_fast_shutdown = 3;
  4. Reinicie o nó primário.

  5. Após a reinicialização, verifique o status novamente:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    O valor deve ser Attach to clean shutdown shared memory, indicando que o nó se conectou a um buffer pool desligado corretamente.

Para uma reinicialização por exceção

  1. Defina innodb_buf_shm_key com um valor diferente de zero em my.cnf e inicie o cluster PolarDB.

  2. Verifique se o recurso está ativo:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    O valor deve ser Allocate from shared memory.

  3. Encerre o processo mysqld para simular uma falha no nó.

  4. Aguarde o nó reiniciar.

  5. Após a reinicialização, verifique o status novamente:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    O valor deve ser Attach to abnormal shutdown shared memory, indicando que o PolarDB detectou e recuperou o buffer pool da memória compartilhada de um estado de falha.

Referência

Parâmetros

Parâmetro

Tipo

Nível

Descrição

innodb_buf_shm_key

Inteiro

Global

Identificador exclusivo para o buffer pool da memória compartilhada. Defina um valor diferente de zero para ativar o Warm Buffer Pool. Valores válidos: 0 a 2^64-1. Padrão: 0 (desativado).

innodb_buf_shm_base_addr

Inteiro

Global

Deslocamento base do endereço de memória virtual para o buffer pool compartilhado. Valores válidos: 0x300000000000 a 2^64-1. Padrão: 0x567800000000.

innodb_buf_page_desc_free_list_size

Inteiro

Global

Número de páginas reservadas para descritores de páginas compactadas. Valores válidos: 8–128. Padrão: 16.

innodb_buf_free_zip_pages

Inteiro

Global

Defina como tratar páginas compactadas na reinicialização. Valores válidos: 1 (libera as páginas compactadas quando o nó reinicia devido a exceções), 2 (força a liberação das páginas compactadas durante a reinicialização). Padrão: 1.

innodb_buffer_pool_parallel_scan_threads

Inteiro

Global

Quantidade de threads para varredura paralela do buffer pool. Valores válidos: 0–512. Padrão: 4.

innodb_buf_shm_huge_page

Booliano

Global

Indica se devem ser usadas páginas grandes ao alocar memória compartilhada. Valores válidos: ON, OFF. Padrão: ON.

innodb_fast_shutdown

Inteiro

Global

Modo de desligamento do InnoDB. Valores válidos: 0, 1, 2, 3. O valor 3 é específico do PolarDB: apresenta o mesmo comportamento do valor 2, mas sem reverter transações não confirmadas. Padrão: 1.

Valores de status

Consulte o estado atual do Warm Buffer Pool:

SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

Valor

Significado

Using process private memory

O Warm Buffer Pool está desativado. O nó utiliza memória privada padrão do processo.

Allocate from shared memory

O Warm Buffer Pool está ativo. O buffer pool foi alocado na memória compartilhada.

Attach to clean shutdown shared memory

O nó se conectou a um buffer pool desligado corretamente. A aceleração total de reinicialização se aplica.

Attach to abnormal shutdown shared memory

O nó se conectou a um buffer pool que sobreviveu a uma falha. O PolarDB corrigiu todas as inconsistências.

mysqlshm

A ferramenta mysqlshm gerencia o buffer pool da memória compartilhada via linha de comando. Utilize-a para inspecionar ou liberar um buffer pool sem precisar reiniciar o banco de dados.

Usage: mysqlshm -k key [options]
   -h, Display this help and exit.
   -k, The shared memory key  [REQUIRED]
   -i, Prinf the basic info of shared memory
   -f, Free the shared memory