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