Resumo : neste tutorial, você aprenderá como configurar o tamanho do bloco do buffer pool innodb_buffer_pool_chunk_size
no mecanismo de armazenamento InnoDB.
Introdução à variável de configuração do tamanho do bloco do buffer pool innodb_buffer_pool_chunk_size
O buffer pool no InnoDB é uma estrutura na memória que armazena os dados acessados com frequência.
O InnoDB utiliza o buffer pool para melhorar o desempenho do banco de dados, acessando os dados diretamente da memória em vez de lê-los no disco.
A variável de configuração innodb_buffer_pool_size define o tamanho do buffer pool.
Se o buffer pool for grande (vários gigabytes), será possível ativar vários buffer pools usando a variável de configuração innodb_buffer_pool_instances para melhorar a simultaneidade.
Esta innodb_buffer_pool_chunk_size
é uma opção de configuração que determina o tamanho do bloco usado ao redimensionar o buffer pool.
Isso innodb_buffer_pool_chunk_size
afeta indiretamente o tamanho do buffer pool, pois o tamanho total do buffer pool é um múltiplo de innodb_buffer_pool_chunk_size
* innodb_buffer_pool_instances
.
No MySQL 8.0, o valor padrão innodb_buffer_pool_chunk_size
é 128 MB. Seu intervalo válido é de 1 MB a 512 MB. Para evitar problemas de desempenho, o número de blocos não deve exceder 1.000.
O MySQL só permite que você defina na innodb_buffer_pool_chunk_size
inicialização ou no arquivo de configuração. Em outras palavras, você não pode usar a SET
instrução para atribuir um valor a ela enquanto o servidor MySQL estiver em execução.
Ao definir a innodb_buffer_pool_chunk_size
variável de configuração, o innodb_buffer_pool_chunk_size
* innodb_buffer_pool_instances
não deve exceder o innodb_buffer_pool_size
. Se isso acontecer, o MySQL truncará o valor para innodb_buffer_pool_size
/ innodb_buffer_pool_instances
.
Se você alterar innodb_buffer_pool_chunk_size
, o MySQL se ajustará automaticamente innodb_buffer_pool_size
para um valor igual ou múltiplo de innodb_buffer_pool_chunk_size
* innodb_buffer_pool_instances
durante a inicialização do buffer pool:
innodb_buffer_pool_size = n * (innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Verificando o valor innodb_buffer_pool_chunk_size
Primeiro, conecte-se ao servidor MySQL :
mysql -u root -p
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em segundo lugar, o valor da innodb_buffer_pool_chunk_size
variável:
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_chunk_size';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------------------------+-----------+
| Variable_name | Value |
+-------------------------------+-----------+
| innodb_buffer_pool_chunk_size | 134217728 |
+-------------------------------+-----------+
1 row in set (0.04 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O tamanho do pedaço está em bytes. Por padrão, innodb_buffer_pool_chunk_size
é 134217728 bytes, ou seja, 128 MB.
Este valor é válido porque o tamanho do pool é 32 vezes o produto do tamanho do bloco e o número de instâncias de buffer:
SELECT @@innodb_buffer_pool_size / @@innodb_buffer_pool_chunk_size * @@innodb_buffer_pool_instances multiple;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------+
| multiple |
+----------+
| 32.0000 |
+----------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Configurar innodb_buffer_pool_chunk_size
Para definir um valor para innodb_buffer_pool_chunk_size
, você precisa alterá-lo no arquivo de configuração do MySQL :
[mysqld]
innodb_buffer_pool_chunk_size=134217728
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que após alterar o arquivo de configuração, você precisa reiniciar o servidor MySQL para que as alterações tenham efeito.
Alternativamente, você pode usá-lo como argumento de linha de comando na inicialização do servidor MySQL:
mysqld --innodb-buffer-pool-chunk-size=134217728
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use
innodb_buffer_pool_chunk_size
para definir o tamanho do bloco usado ao redimensionar o buffer pool do InnoDB.