innodb_buffer_pool_instances: configurando múltiplas instâncias do buffer pool para melhorar a simultaneidade no MySQL

Resumo : neste tutorial, você aprenderá como usar a innodb_buffer_pool_instancesopçã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_instancesvariá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_instancescomo um valor maior que 1. Você pode configurá-lo até 64.

Observe que o innodb_buffer_pool_instancesefeito entra em vigor somente quando você define innodb_buffer_pool_sizeum tamanho de 1 GB ou mais.

Configurando instâncias do buffer pool

Primeiro, abra o arquivo de configuração do MySQL (normalmente my.iniou my.cnfarquivo) em um editor de texto e defina innodb_buffer_pool_instancescomo um número, como 2:

[mysqld]
innodb_buffer_pool_instances=2Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Como o mysqld lê innodb_buffer_pool_instances, você precisa colocar a innodb_buffer_pool_instancesopção na [mysqld]seção.

Em seguida, verifique se a innodb_buffer_pool_sizevariável de configuração está definida com um valor maior que 1 GB:

[mysqld]
innodb_buffer_pool_size=2GLinguagem 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 -pLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por fim, verifique a innodb_buffer_pool_instancesopçã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_instancesvariável de configuração para configurar diversas instâncias do buffer pool para melhorar a simultaneidade.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *