MySQL навсегда зависает от команды "rehash"

У нас есть сервер MySQL с несколькими базами данных для разных типов данных. Одним из них является база данных WordPress.

Я могу подключиться нормально, "показать базы данных" и "использовать яблоки", "использовать апельсины" и т. Д. (Заменить фрукты для наших реальных баз данных), но когда я делаю "использовать wordpress" вместо "база данных изменена", я получаю

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

Конечно, если я запускаю mysql с дополнительным флагом -A, кажется, все работает. Тогда я могу "использовать WordPress" и посмотреть на данные.

Если я запускаю его с -A и делаю "использовать WordPress", это работает, тогда я делаю "перефразировать", и он зависает.

Кто-нибудь видел это? Что я могу с этим поделать?

1 ответ

Клиент командной строки MySQL предлагает завершение имени базы данных / таблицы / столбца: то есть, когда вы начинаете вводить имя и нажимаете клавишу Tab, имя завершается. Для этого клиент создает хэш имен баз данных, таблиц и столбцов, которые он запрашивает, когда вы вызываете завершение.

Если клиент командной строки запускается с включенной автоматической перефразировкой, он автоматически создает хэш завершения при подключении к базе данных и поддерживает его в актуальном состоянии. Для больших баз данных это может занять некоторое время. При запуске клиента с --no-auto-rehash (-A), хеш не построен, и завершение недоступно, пока вы не создадите хеш вручную (используя rehash или же \#). Это уменьшает время запуска, особенно для больших баз данных.

Таким образом, это нормально, что хеширование занимает много времени в большой базе данных. Это то, что вы, кажется, испытываете, когда вы начинаете с включенной автоматической перефразировкой (т.е. без -Aили с -A а потом rehash). Для небольших баз данных (apples а также oranges в твоем примере) это не заметно, но для крупных (wordpress) это медленно. Некоторые альтернативы, которые я использую:

  • не перефразировать
  • выпить кофе, пока строится хэш
  • использовать другой клиент, который предлагает завершение быстрее
Другие вопросы по тегам