Como melhorar o desempenho do servidor MySQL com otimização adequada

Ajustando a troca:

Em sistemas Linux, o parâmetro swappiness determina a agressividade com que o kernel usará swaps. O valor de swappiness pode ser ajustado para reduzir o uso de swaps. Valores mais baixos (por exemplo, 10) reduzem a tendência do sistema de usar swaps:

sudo sysctl vm.swappiness=10

Para tornar essas alterações permanentes, adicione-as ao /etc/sysctl.conf:

vm.swappiness=10

Monitoramento de uso de memória:

Use ferramentas de monitoramento para ficar de olho no uso e nas trocas de memória do sistema. Ferramentas como htop, free ou monitoramento gráfico como Grafana podem ajudar a monitorar o uso de memória em tempo real.

Alocando memória com sabedoria para MySQL:

Certifique-se de que a configuração do MySQL não use toda a memória física. Deixe memória suficiente para o sistema operacional e outros serviços. Por exemplo, se você tiver 16 GB de RAM e tiver calculado que o sistema operacional precisa de cerca de 3,2 GB, aloque cerca de 12 a 13 GB para o MySQL.

Otimização do uso de memória do MySQL:

Conforme explicado anteriormente, ajuste os parâmetros de memória do MySQL, como innodb_buffer_pool_size, key_buffer_size e query_cache_size, para garantir que o uso total da memória do MySQL não exceda a memória disponível.

6. Configurando a memória para cache

O cache é um componente importante no MySQL que ajuda a melhorar o desempenho armazenando dados acessados com frequência na memória, reduzindo assim a necessidade de acessar discos mais lentos. Usando o cache de forma eficaz, você pode melhorar a velocidade da consulta e reduzir a carga no sistema de armazenamento. Os dois principais tipos de caches usados no MySQL são o cache MyISAM e o cache InnoDB.

Configurando o cache para MyISAM e InnoDB

MyISAM Cache

MyISAM é um mecanismo de armazenamento MySQL mais antigo e usa key_buffer_size como parâmetro principal para definir o tamanho de seu cache de índice. Esse parâmetro é muito importante porque os índices armazenados em cache podem ser acessados muito mais rapidamente do que os índices que precisam ser lidos do disco.

key_buffer_size: Especifica o tamanho do cache para o índice MyISAM. Definir esse tamanho muito pequeno pode levar a um acesso lento frequente ao disco, enquanto defini-lo muito grande pode deixar um pouco de memória para outras necessidades. Como regra geral, key_buffer_size deve ser definido entre 25-30% da memória física total em um servidor que usa apenas MyISAM.

Exemplos de configurações no arquivo de configuração do MySQL (my.cnf):

[mysqld]

key_buffer_size = 4G

InnoDB Cache

O InnoDB é o mecanismo de armazenamento padrão e mais usado no MySQL. O InnoDB usa innodb_buffer_pool_size para configurar o cache principal que armazena os dados e índices das tabelas do InnoDB.

innodb_buffer_pool_size: Especifica o tamanho do buffer pool usado para armazenar dados e índices. Essa configuração é crítica para o desempenho do InnoDB porque os dados acessados com frequência são armazenados em um buffer pool, reduzindo o acesso ao disco. Como regra geral, innodb_buffer_pool_size deve ser definido entre 60-80% da memória física total em um servidor que usa apenas InnoDB.

Exemplos de configurações no arquivo de configuração do MySQL (my.cnf):

[mysqld]

innodb_buffer_pool_size = 12G

innodb_buffer_pool_instances: Se o pool de buffers for grande (mais de 1 GB), você poderá dividi-lo em várias instâncias para aumentar a simultaneidade. Por exemplo, se innodb_buffer_pool_size estiver definido como 12 GB, você poderá dividi-lo em 4 instâncias de 3 GB cada:

[mysqld]

innodb_buffer_pool_size = 12G

innodb_buffer_pool_instances = 4

Últimos artigos