
Eu tenho um banco de dados mysql que costumava funcionar perfeitamente, mas agora está muito lento na inicialização. Quando eu digito
$> mysql -u foo bar
Recebo a seguinte mensagem normal por cerca de 30 segundos antes de receber um aviso:
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 é muito mais rápido:
$> mysql -u foo bar -A
Mas por que tenho que esperar tanto tempo na inicialização normal? Este não é um banco de dados muito grande (edição: <10 MB) e os dados não parecem estar corrompidos (tudo parece bem após a inicialização). Não tenho nenhum outro cliente conectando ao servidor mysql ao mesmo tempo (apenas um processo é mostrado com o comando show full processlist
) e já reiniciei o mysqld
serviço.
O que está acontecendo ?
Responder1
Acho que o problema decorre dorecurso de repetição automática
Eu tentei isso hoje
No prompt do mysql, digitei
mysql> desc outbound_
Acertei a aba duas vezes e obtive 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_
Cada banco de dados e tabela surgiram para eu escolher
Evidentemente, o cliente mysql precisa ler o information_schema
banco de dados. Se sua instância mysql contiver muitas tabelas InnoDB, posso ver auto-rehash
o cliente mysql travando até que ele possa ler information_schema
o banco de dados.
Responder2
Adicione o seguinte ao seu [mysql] (observe que não termina com d) e isso irá acelerar bastante o seu tempo de resposta:
no-auto-rehash
Responder3
Obrigado a todos, 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 associado foo.frm
não pode mais ser lido.
$> cat foo.frm
cat: foo.frm: input/output error
Falha no disco:/Mysql demora muito na inicialização porque tenta acessar os dados desse arquivo.