
Tengo una base de datos MySQL que solía funcionar perfectamente bien, pero ahora va muy lenta al iniciarse. Cuando escribo
$> mysql -u foo bar
Recibo el siguiente mensaje habitual durante unos 30 segundos antes de recibir un mensaje:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Por supuesto, lo probé y va mucho más rápido:
$> mysql -u foo bar -A
Pero, ¿por qué tengo que esperar tanto durante el inicio normal? Esta no es una base de datos muy grande (edición: <10 MB) y los datos no parecen estar dañados (todo se ve bien después del inicio). No tengo ningún otro cliente conectándose al servidor mysql al mismo tiempo (solo se muestra un proceso con el comando show full processlist
) y ya reinicié el mysqld
servicio.
Qué está sucediendo ?
Respuesta1
Creo que el problema surge de lafunción de repetición automática
Probé esto hoy
En el indicador de MySQL, escribí
mysql> desc outbound_
Presioné la pestaña dos veces y obtuve lo siguiente
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 base de datos y tabla surgió para que yo eligiera.
Evidentemente, el cliente mysql tiene que leer la information_schema
base de datos. Si su instancia de MySQL contiene muchas tablas InnoDB, puedo ver auto-rehash
que el cliente MySQL se detiene hasta que pueda leer information_schema
la base de datos.
Respuesta2
Agregue lo siguiente a su [mysql] (observe que no termina en d) y acelerará enormemente su tiempo de respuesta:
no-auto-rehash
Respuesta3
Gracias a todos, encontré la respuesta a mi problema. No se puede acceder a una de las tablas de la base de datos:
mysql> show columns from foo;
ERROR 1033 (HY000): Incorrect information in file: './db/foo.frm'
El archivo asociado foo.frm
ya no se puede leer.
$> cat foo.frm
cat: foo.frm: input/output error
Fallo de disco:/ Mysql tarda mucho en iniciarse porque intenta acceder a los datos de ese archivo.