У меня есть большая (около 10 ГБ с 20 ГБ innodb буферным пулом) база данных, и я заметил, что когда я запускаю ее, примерно в течение первых получаса, она периодически блокирует и разблокирует все таблицы, делая это довольно неприятно для пользователей, которые пытаются получить доступ к нашему сайту в течение первых получаса после перезапуска базы данных.
Хотя я не могу быть на 100% уверен в причинно-следственной связи, я замечаю, что время, когда база данных сама блокируется и разблокируется, совпадает со временем, когда
/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf --all-databases --fast --silent
и
perl -e $_=join("", <>); s/^[^\n]+\n(error|note)\s+: The (handler|storage engine) for the table doesn.t support check\n//smg;print;
работают на моем сервере баз данных. Мой вопрос заключается в том, действительно ли необходимо запускать mysqlcheck (который по умолчанию находится в скрипте mysql /etc/init.d/mysql) при запуске Mysql? Результаты Google, которые я обнаружил на mysqlcheck, показывают, что он «исправляет и оптимизирует» таблицы, но я не ожидаю, что мои таблицы будут разбиты, и я скептически отношусь к преимуществам оптимизации, предоставляемым этой утилитой.
Если это имеет значение, я использую Mysql 5.0.32