Por que o acesso ao meu banco de dados é muito lento? [fechadas]

4

Eu tenho um banco de dados mysql que costumava funcionar perfeitamente, mas agora ele está morto devagar na inicialização. Quando eu digito

$> mysql -u foo bar

Recebo a seguinte mensagem habitual por cerca de 30 segundos antes de receber uma solicitação:

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Claro, eu tentei e foi muito mais rápido:

$> mysql -u foo bar -A

Mas por que eu tenho que esperar tanto tempo na inicialização normal? Este não é um banco de dados muito grande (editar: < 10 MB), e os dados não parecem estar corrompidos (tudo parece bem após a inicialização). Eu não tenho nenhum outro cliente se conectando ao servidor mysql ao mesmo tempo (apenas um processo é mostrado com o comando show full processlist ) e eu já reiniciei o serviço mysqld .

O que está acontecendo?

    
por Fabien 15.10.2012 / 17:33

3 respostas

2

Adicione o seguinte ao seu [mysql] (note que ele não termina com d) e isso irá acelerar bastante o seu tempo de resposta:

no-auto-rehash
    
por 15.10.2012 / 19:47
1

Acho que o problema decorre do auto Recurso -rehash

Eu tentei isso hoje

No prompt do mysql, digitei

mysql> desc outbound_

Eu apertei a aba duas vezes e peguei o seguinte

mysql> desc outbound_
outbound_call_id                      outbound_log.ext                      outbound_log.template_id
outbound_log                          outbound_log.failed                   outbound_log.transfer_connected
outbound_log.DealerVoiceProviderType  outbound_log.icallclick_alert         outbound_log.transfer_duration
outbound_log.VoipCallStatusType       outbound_log.isService                outbound_log.transfer_ended
outbound_log.VoipTransferStatusType   outbound_log.lead_id                  outbound_log.transfer_ext
outbound_log.call_duration            outbound_log.outbound_log_id          outbound_log.transfer_phone
outbound_log.call_ended               outbound_log.phone                    outbound_log.transfer_started
outbound_log.call_started             outbound_log.postback                 outbound_log.transfer_status
outbound_log.call_type                outbound_log.recording_url            outbound_log.vehicle_id
outbound_log.called                   outbound_log.remote_call_id           outbound_log_id
outbound_log.callnote_synced          outbound_log.sales_id
outbound_log.dealer_id                outbound_log.scheduled
mysql> desc outbound_

Todos os bancos de dados e tabelas foram escolhidos

Evidentemente, o cliente mysql precisa ler o banco de dados information_schema . Se sua instância mysql contém muitas tabelas InnoDB, eu posso ver auto-rehash prendendo o cliente mysql até que ele possa ler information_schema database.

    
por 15.10.2012 / 18:14
0

Obrigado a todos, eu encontrei a resposta para o meu problema. Uma das tabelas do banco de dados não pode ser acessada:

mysql> show columns from foo;
ERROR 1033 (HY000): Incorrect information in file: './db/foo.frm'

O arquivo foo.frm associado não pode mais ser lido.

$> cat foo.frm
cat: foo.frm: input/output error

Falha no disco: / O MySQL demora tanto na inicialização porque tenta acessar os dados desse arquivo.

    
por 16.10.2012 / 10:53

Tags