У меня есть база данных 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
служба.
В чем дело ?
Добавьте следующее в свой [mysql] (обратите внимание, что он не заканчивается на d), и это значительно ускорит ваше время ответа:
no-auto-rehash
Я думаю, проблема в том, что функция автоматического повторного хеширования
Я попробовал это сегодня
В командной строке 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
база данных.
Всем спасибо, я нашел ответ на свою проблему. Невозможно получить доступ к одной из таблиц из базы данных:
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 запускается так долго, потому что пытается получить доступ к данным из этого файла.