O parâmetro innodb_buffer_pool_size especifica o tamanho do buffer pool do InnoDB. Para melhorar o desempenho da sua instância do ApsaraDB RDS for MySQL, atualize esse parâmetro.
Pré-requisitos
Este tópico aplica-se às seguintes edições de instância:
RDS High-availability Edition
RDS Basic Edition
RDS Cluster Edition
Limitações
Não é possível alterar manualmente o parâmetro
innodb_buffer_pool_sizede uma instância Serverless do ApsaraDB RDS for MySQL. A instância ajusta automaticamente o tamanho do buffer pool do InnoDB quando sua especificação muda.Se o parâmetro
innodb_buffer_pool_sizede uma instância do ApsaraDB RDS for MySQL estiver configurado com um valor muito alto, poderá causar um erro de falta de memória (OOM) e acionar um failover. Para evitar isso, por favor, configure o tamanho do buffer pool de acordo com os valores máximos recomendados neste tópico.
Casos de uso
Caso a memória não seja limitada, aumente o valor desse parâmetro para otimizar o desempenho do banco de dados.
Aumentar o tamanho: se o servidor tiver memória suficiente, aumentar o
innodb_buffer_pool_sizereduz significativamente a E/S do disco. Se os dados consultados puderem ser armazenados total ou majoritariamente na memória, a CPU aguardará menos pela E/S do disco, reduzindo a utilização geral da CPU. Por exemplo, em instruções UPDATE executadas com frequência, um buffer pool maior reduz a dependência do disco e alivia a contenção de bloqueios de linha. Isso melhora o desempenho de atualização de dados, especialmente para grandes lotes de registros.Diminuir o tamanho: se a memória for limitada ou outras aplicações exigirem muita memória, diminua o valor de
innodb_buffer_pool_size.
Tamanho do buffer pool do InnoDB
Ajuste o tamanho do buffer pool do InnoDB e defina o parâmetro innodb_buffer_pool_size com a seguinte fórmula:
{DBInstanceClassMemory*X/Y}
# Example: {DBInstanceClassMemory*7/10}
DBInstanceClassMemoryé a memória da especificação da instância RDS (uma variável do sistema), eX/Yrepresenta a proporção do tamanho do Buffer Pool em relação à memória da instância.O intervalo ajustável varia de 128 MB a 90% da memória total da instância (
DBInstanceClassMemory * 9 / 10).
Tamanho padrão do buffer pool do InnoDB
Instâncias de disco local de alto desempenho
Para as especificações a seguir, o tamanho padrão do Buffer Pool é de 80% a 90% da memória da instância. Para outras especificações, o tamanho padrão é de 75% da memória da instância (instance memory * 3 / 4).
|
Família da instância |
Tipo de instância |
CPU e memória |
Valor padrão (MB) e porcentagem |
|
Uso geral |
rds.mysql.s3.large |
4 núcleos, 8 GB |
7372 (90%) |
|
rds.mysql.m1.medium |
4 núcleos, 16 GB |
14745 (90%) |
|
|
rds.mysql.c1.large |
8 núcleos, 16 GB |
13107 (80%) |
|
|
rds.mysql.c1.xlarge |
8 núcleos, 32 GB |
27852 (85%) |
|
|
rds.mysql.c2.xlarge |
16 núcleos, 64 GB |
52428 (80%) |
|
|
rds.mysql.c2.xlp2 |
16 núcleos, 96 GB |
78643 (80%) |
|
|
Dedicada |
mysql.x4.large.2 |
4 núcleos, 16 GB |
14745 (90%) |
|
mysql.x8.large.2 |
4 núcleos, 32 GB |
29491 (90%) |
|
|
mysql.x4.xlarge.2 |
8 núcleos, 32 GB |
27852 (85%) |
|
|
mysql.x8.xlarge.2 |
8 núcleos, 64 GB |
55705 (85%) |
|
|
mysql.x4.2xlarge.2 |
16 núcleos, 64 GB |
52428 (80%) |
|
|
mysql.x8.2xlarge.2 |
16 núcleos, 128 GB |
104857 (80%) |
Instâncias de disco cloud
Especificações de uso geral
O tamanho padrão do Buffer Pool é de 75% da memória da instância (instance memory * 3 / 4).
Especificações dedicadas
Tamanho padrão do Buffer Pool:
(instance memory - system reserved memory) * 3 / 4A fórmula para calcular a memória reservada do sistema é:
min{Instance Memory / 2, 2048} + max{Instance CPU * 64, Instance Memory / 64} + (Instance Memory / 64) + 285, em que a unidade da memória da instância é MB.
A tabela a seguir lista os tamanhos padrão e os valores máximos recomendados do buffer pool para especificações de instâncias dedicadas.
|
Núcleos de CPU |
Memória da instância (MB) |
Tamanho do buffer pool |
|
|
Valor padrão (MB) |
Valor máximo recomendado (MB) |
||
|
2 |
4096 |
1024 |
1024 |
|
2 |
8192 |
4096 |
4096 |
|
2 |
16384 |
9216 |
10240 |
|
4 |
8192 |
4096 |
4096 |
|
4 |
16384 |
9216 |
10240 |
|
4 |
32768 |
21504 |
22528 |
|
8 |
16384 |
9216 |
10240 |
|
8 |
32768 |
21504 |
22528 |
|
8 |
65536 |
45056 |
48128 |
|
12 |
24576 |
15360 |
16384 |
|
12 |
49152 |
33792 |
35840 |
|
12 |
98304 |
69632 |
73728 |
|
16 |
32768 |
21504 |
22528 |
|
16 |
65536 |
45056 |
48128 |
|
16 |
131072 |
93184 |
99328 |
|
24 |
49152 |
32768 |
34816 |
|
24 |
98304 |
69632 |
73728 |
|
24 |
196608 |
140288 |
149504 |
|
32 |
65536 |
45056 |
47104 |
|
32 |
131072 |
93184 |
99328 |
|
32 |
262144 |
188416 |
200704 |
|
52 |
98304 |
67584 |
72704 |
|
52 |
196608 |
140288 |
149504 |
|
52 |
393216 |
283648 |
302080 |
|
64 |
262144 |
188416 |
200704 |
|
64 |
524288 |
378880 |
403456 |
|
102 |
786432 |
569344 |
607232 |
|
104 |
196608 |
138240 |
147456 |
|
104 |
393216 |
282624 |
302080 |
O tamanho do buffer pool do InnoDB é sempre um múltiplo de innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances:
O
innodb_buffer_pool_chunk_sizeé fixo em 32 MB, mas esse valor pode ser 128 MB em instâncias criadas anteriormente.Se o valor configurado para
innodb_buffer_pool_sizenão for um múltiplo, o sistema o arredondará automaticamente para o próximo múltiplo inteiro.
Por exemplo, se o innodb_buffer_pool_chunk_size for 1 GB e o innodb_buffer_pool_instances for 1, ao configurar o innodb_buffer_pool_size como 1,5 GB, o valor será ajustado para 2 GB.
Ajustar o buffer pool para uma única instância
Para começar, acesse a página Instances. Na barra de navegação superior, selecione a região onde a instância RDS está localizada. Em seguida, encontre a instância e clique em seu respectivo ID.
No painel de navegação à esquerda, clique em Parameters.
Encontre o parâmetro innodb_buffer_pool_size, clique em Modify
na coluna Actions, modifique o valor e, em seguida, clique em OK.-
Em seguida, clique em Apply Changes. Na caixa de diálogo exibida, clique em OK.
NotaA alteração do parâmetro
innodb_buffer_pool_sizeexige a reinicialização do RDS for MySQL 5.6, mas não exige reinicialização para as versões 5.7 e 8.0 do RDS for MySQL.
Ajustar com um modelo de parâmetros
Para isso, crie um novo modelo de parâmetros e modifique o innodb_buffer_pool_size e aplique o modelo às instâncias de destino. Caso já possua um modelo de parâmetros, modifique-o e aplique-o às instâncias de destino. Para mais informações, consulte Using parameter templates.
Em seguida, defina o Running Value como {DBInstanceClassMemory*7/10}. Após aplicar o modelo, reinicie a instância do ApsaraDB RDS for MySQL 5.6 para que a alteração entre em vigor. Não é necessária a reinicialização para as versões 5.7 e 8.0.
Documentos relacionados
Use também os dados de monitoring da instância e a análise do slow query log para analisar e resolver memory usage issues for ApsaraDB RDS for MySQL.