Desempenho MYSQL

Desempenho MYSQL

Uma grande quantidade de operações de insert, update ou delete podem fazer com que a tabela fique fragmentada, podendo causar alto uso de espaço TMP, I/O de disco e processamento, gerando lentidão e podendo causar uma sobrecarga, podendo ser necessária uma manutenção em sua base de dados, neste artigo daremos algumas dicas, acompanhe logo a baixo:

Optimize Table

O comando ‘optimize table’, é responsável por reorganizar o armazenamento físico dos dados de índices associados a tabela, para reduzir espaço de armazenamento e melhorar a eficiência de I/O quando a tabela é acessada. As mudanças exatas feitas em cada tabela dependem do tipo de storage engine utilizado pela tabela.

   Se a tabela tem linhas deletadas ou divididas, repara a tabela.
   Se as páginas de índice não estão organizadas, as organiza.
   Se as estatísticas da tabela não estão atualizadas (e a reparação não pode ser completada organizando o índice), as atualiza.

Para tabelas InnoDB, o OPTIMIZE TABLE é ligado ao ALTER TABLE, que recria a tabela para atualizar as estatísticas do índice e liberar espaço não utilizado no índice clusterizado.

Verificando se suas tabelas estão fragmentadas

Acesse sua base de dados execute o seguinte comando para verificar se sua base esta fragmentada:

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, DATA_FREE, (DATA_FREE*100/DATA_LENGTH) as PRC FROM INFORMATION_SCHEMA.TABLES WHERE (DATA_FREE*100/DATA_LENGTH);

O comando acima mostra no campo PRC o percentual de fragmentação levando em consideração o ‘DATA_LENGTH’ e o ‘DATA_FREE’, teoricamente quanto maior o datafree mais fragmentada está a tabela, porém este comando mostra também as tabelas InnoDB, onde o ‘datafree’ pode ter um valor maior e fixo, isto não indica fragmentação.

Para verificar as engines das tabelas e também poder visualizar o ‘DATA_FREE’ você pode rodar o seguinte comando:

SHOW TABLE STATUS;

Qualquer valor no campo ‘DATA_FREE’ das tabelas MyIsam é indício de fragmentação.

Desfragmentado as tabelas MyIsam, execute o seguinte comando:

optimize table NOMEDATABELA;

Para reindexar as tabelas InnoDB:

ALTER TABLE `NOMEDATABELA` ENGINE=InnoDB;

Para otimizar todas as tabelas você pode rodar o seguinte comando SSH: (a opção auto-repair faz com que dados corrompidos sejam descartados, caso queira pode omitir ‘–auto-repair’ do comando)

mysqlcheck -h hostname -u nomedabase -psenhadabase nomedabase –optimize –auto-repair;

Deixe um comentário

O seu endereço de e-mail não será publicado.