Resumo : neste tutorial, você aprenderá como usar a innodb_buffer_pool_instances
opção de configuração para configurar várias instâncias do buffer pool para melhorar a simultaneidade.
Pool de buffers e simultaneidade
No InnoDB , um buffer pool é uma estrutura de memória que armazena os dados e índices acessados com frequência.
O InnoDB utiliza o buffer pool para melhorar o desempenho do servidor de banco de dados MySQL, acessando os dados diretamente na memória, em vez de ler os dados do disco.
Normalmente, quanto mais memória você alocar para o buffer pool, melhor será o desempenho do servidor MySQL.
Para configurar um tamanho ideal do buffer pool, ajuste a variável de configuração innodb_buffer_pool_size .
Quando o buffer pool é grande (intervalo de vários gigabytes), o MySQL atende muitas solicitações de dados recuperando-os da memória. Nesse caso, você pode encontrar um gargalo devido a vários encadeamentos que tentam acessar o conjunto de buffers ao mesmo tempo.
Para minimizar a contenção, você pode ativar vários buffer pools. A innodb_buffer_pool_instances
variável de configuração permite especificar o número de instâncias do buffer pool.
Por padrão, o innodb_buffer_pool_instances
é definido como 1. Para ativar diversas instâncias do buffer pool, defina o innodb_buffer_pool_instances
como um valor maior que 1. Você pode configurá-lo até 64.
Observe que o innodb_buffer_pool_instances
efeito entra em vigor somente quando você define innodb_buffer_pool_size
um tamanho de 1 GB ou mais.
Configurando instâncias do buffer pool
Primeiro, abra o arquivo de configuração do MySQL (normalmente my.ini
ou my.cnf
arquivo) em um editor de texto e defina innodb_buffer_pool_instances
como um número, como 2:
[mysqld]
innodb_buffer_pool_instances=2
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como o mysqld lê innodb_buffer_pool_instances
, você precisa colocar a innodb_buffer_pool_instances
opção na [mysqld]
seção.
Em seguida, verifique se a innodb_buffer_pool_size
variável de configuração está definida com um valor maior que 1 GB:
[mysqld]
innodb_buffer_pool_size=2G
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, salve o arquivo de configuração e reinicie o MySQL.
Depois disso, conecte-se ao servidor MySQL :
mysql -u root -p
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, verifique a innodb_buffer_pool_instances
opção de configuração:
SHOW VARIABLES LIKE 'innodb_buffer_pool_instances';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 2 |
+------------------------------+-------+
1 row in set (0.01 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Habilite várias instâncias de buffer pool para melhorar significativamente a simultaneidade e o desempenho geral de servidores MySQL com grandes buffer pools.
- Use a
innodb_buffer_pool_instances
variável de configuração para configurar diversas instâncias do buffer pool para melhorar a simultaneidade.