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
) это медленно. Некоторые альтернативы, которые я использую:
- не перефразировать
- выпить кофе, пока строится хэш
- использовать другой клиент, который предлагает завершение быстрее