Почему доступ к моей базе данных очень медленный?

Почему доступ к моей базе данных очень медленный?

У меня есть база данных mysql, которая раньше работала отлично, но теперь она ужасно медленно запускается. Когда я ввожу

$> mysql -u foo bar

Я получаю следующее обычное сообщение в течение примерно 30 секунд, прежде чем получаю подсказку:

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

Конечно, я попробовал, и это происходит гораздо быстрее:

$> mysql -u foo bar -A

Но почему мне приходится ждать так долго при обычном запуске? Это не очень большая база данных (редактирование: <10 МБ), и данные, похоже, не повреждены (все выглядит нормально после запуска). У меня нет других клиентов, подключающихся к серверу MySQL в то же время (только один процесс отображается с командой show full processlist), и я уже перезапустил mysqldслужбу.

Что происходит ?

решение1

Я думаю, что проблема возникает из-зафункция автоматического перефразирования

Я попробовал это сегодня.

В командной строке mysql я набрал:

mysql> desc outbound_

Я нажал на вкладку дважды и получил следующее

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_

Каждая база данных и таблица были предоставлены мне для выбора

Очевидно, клиент mysql должен прочитать information_schemaбазу данных. Если ваш экземпляр mysql содержит много таблиц InnoDB, я могу представить себе auto-rehashостановку клиента mysql, пока он не сможет прочитать information_schemaбазу данных.

решение2

Добавьте следующее в ваш [mysql] (обратите внимание, что он не заканчивается на d), и это значительно ускорит время отклика:

no-auto-rehash

решение3

Спасибо всем, я нашел ответ на свою проблему. Одна из таблиц в базе данных недоступна:

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

Соответствующий foo.frmфайл больше не может быть прочитан.

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

Сбой диска :/ Mysql так долго запускается, потому что пытается получить доступ к данным из этого файла.

Связанный контент