Manutenção do MySQL - como limpar o buffer?

3

Nós temos um servidor rodando nosso aplicativo web baseado em PHP / MySQL que é LENTO.

Meu antecessor diz:

We used to do database maintenance, which used to clear the buffer, cached and unwanted variables.

E eu me pergunto o que diabos ele quer dizer com essa afirmação? Ele quer dizer uma simples otimização das tabelas? Ou o cache de consulta? Eu entendo o MySQL, mas não sei o que ele está descrevendo.

Gostaria de agradecer a todos os ponteiros.

    
por Dougal 22.02.2011 / 11:42

3 respostas

3

Se suas operações de manutenção foram realizados em um servidor executando, só posso pensar em uma "mesa nivelada" (De manual do MySQL: Fecha todas as tabelas abertas, obriga todas as tabelas em uso para serem fechadas, e libera o cache de consultas flush. TABLES também remove todos os resultados da consulta do cache de consulta).

Mas talvez eles estivessem apenas reiniciando o servidor ...

Para a parte "lento", supondo que você está executando um sistema Unix, você pode tentar usar mysql-tuning primer ou mysqltuner.pl ter alguma pista sobre o que você pode mudar em sua configuração de servidor

    
por 22.02.2011 / 14:44
2

Aqui está outra coisa a considerar:

Se a maioria das tabelas for InnoDB, você pode considerar a possibilidade de configurar o seguinte em /etc/my.cnf:

[mysqld]
innodb_max_dirty_pages_pct=0;

No MySQL 5.1 e verso, o padrão é 90; No MySQL 5.5, o padrão é 75;

A configuração de innodb_max_dirty_pages_pct como zero (0) mantém as páginas de dados InnoDB niveladas ao máximo em disco (até 99.1%) do buffer pool innodb.

Sem mexer em nada, isso também provê um desligamento mais rápido do mysqld na presença de cargas de dados do InnoDB, já que o mysqld libera o buffer pool innodb no desligamento.

Você pode realmente definir isso rapidamente sem reiniciar o mysql:

mysql> SET GLOBAL innodb_max_dirty_pages_pct=0;
    
por 22.02.2011 / 22:53
2

Eu me arrepio dessa idéia de manutenção do banco de dados envolvendo a limpeza do buffer para aumentar a velocidade. Se o seu sistema está rastejando e esta é a resposta, estou cético de que as coisas foram feitas corretamente.

A maneira correta de abordar isso é descobrir qual é o seu gargalo. Geralmente é um disco (geralmente uma extensão de alocação de memória insuficiente) ou CPU.

Qual é a carga do seu banco de dados? Você deveria estar usando tabelas InnoDB se não estiver? As consultas são escritas de maneira eficiente?

"Como configurar um servidor MySQL sob carga" é um grande livro de informações. Comece com a suposição de que tudo está errado e considere fazer com que um estranho passe uma ou duas horas olhando para você.

    
por 19.01.2012 / 23:27