Я попытался добавить индекс в поле даты в таблице (MyISAM), имеющей около 4000 строк, с помощью PHPMyAdmin. PHPMyadmin завис, наконец, истекло время ожидания. Теперь, даже после перезагрузки сервера, сервер MySQL (MariaDB) использует 100% ЦП и почти не отвечает. Например, запрос на возврат 400 строк в небольшой таблице занял 48 секунд, тогда как обычно это было бы меньше 1 секунды.
С момента попытки обновления прошло не менее 15-20 минут.
Show ProcessList;
показывает несколько запросов, ожидающих блокировки таблицы, но не показывает UPDATE TABLE
запрос, который добавлял бы индекс.
Обычно требуется некоторое время после добавления индекса для построения индекса, и MySQL обычно в это время очень не отвечает? Как я могу проверить статус или остановить процесс?
mysqlcheck
сообщает всем таблицам "ОК".
РЕШЕНИЕ: Я добавил индекс в поле DateTime в другой Таблица MyISAM, с которой я присоединялся к этой таблице (в ней было около 25 тыс. Строк). По какой-то причине этот индекс помешал выполнению запроса - не знаю, что случилось. Я удалил индекс, и все было хорошо. Обе таблицы проверены в порядке, поэтому она не была повреждена. Не уверен, как кто-нибудь сможет отследить этот тип проблемы, не возвращая предыдущие модификации схемы по одной за раз. Не было сообщений об ошибках, указывающих на проблему.
Еще через 5,5 дней для добавления индекса потребовалось перестроить таблицу и все ее индексы. Это включает ваш индекс FULLTEXT. Его восстановление довольно утомительно для процессора.
Более новые версии имеют FULLTEXT для InnoDB.
В более новых версиях есть способы ДОБАВИТЬ ИНДЕКС, не перестраивая все остальное.
И т.п.