Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

pule a cópia para a tabela tmp no disco mysql


Há duas coisas que você pode fazer para diminuir o impacto dessa

OPÇÃO 1 :Aumente as variáveis ​​tmp_table_size e/ou max_heap_table_size

Essas opções controlarão o tamanho que uma tabela temporária na memória pode ter antes que ela seja considerada muito grande e, em seguida, páginas para o disco como uma tabela MyISAM temporária. Quanto maiores forem esses valores, menor será a probabilidade de você obter 'copiando para a tabela tmp no disco'. Certifique-se de que seu servidor tenha RAM suficiente e max_connections é configurado moderadamente caso uma única conexão de banco de dados precise de muita RAM para suas próprias tabelas temporárias.

OPÇÃO #2 :Use um disco RAM para tabelas tmp

Você deve ser capaz de configurar um disco RAM no Linux e, em seguida, definir o tmpdir no mysql para ser a pasta que tem o disco RAM montado.

Para começar, configure um disco RAM no sistema operacional

Crie uma pasta no Linux chamada /var/tmpfs
mkdir /var/tmpfs

Em seguida, adicione esta linha ao /etc/fstab (por exemplo, se você quiser um disco de 16 GB de RAM)
none                    /var/tmpfs              tmpfs   defaults,size=16g        1 2

e reinicie o servidor.

Nota:É possível fazer um disco RAM sem reiniciar. Apenas lembre-se de adicionar a linha acima mencionada ao /etc/fstab para ter o disco RAM após a reinicialização do servidor.

Agora para MySQL:

Adicione esta linha em /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs

e reinicie o mysql.

OPÇÃO #3:Obtenha a tabela tmp no disco RAM o mais rápido possível (supondo que você aplique a OPÇÃO #2 primeiro)

Você pode querer forçar tabelas tmp no disco RAM o mais rápido possível para que o MySQL não gire suas rodas migrando grandes tabelas tmp na memória para um disco RAM. Basta adicionar isso ao /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K

e reinicie o mysql. Isso fará com que até mesmo a menor tabela temporária seja criada diretamente no disco RAM. Você pode executar periodicamente ls -l /var/tmpfs para ver as mesas temporárias irem e virem.

De uma chance !!!

AVISO

Se você não vir nada além de tabelas temporárias em /var/tmpfs 24/7, isso pode afetar a funcionalidade/desempenho do sistema operacional. Para garantir que /var/tmpfs não fique superpovoado, procure ajustar suas consultas. Depois de fazer isso, você verá menos tabelas tmp se materializando em /var/tmpfs.