¿Por qué el acceso a mi base de datos es muy lento?

¿Por qué el acceso a mi base de datos es muy lento?

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 mysqldservicio.

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_schemabase de datos. Si su instancia de MySQL contiene muchas tablas InnoDB, puedo ver auto-rehashque el cliente MySQL se detiene hasta que pueda leer information_schemala 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.frmya 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.

información relacionada