Нужно ли запускать mysqlcheck при запуске mysql? - PullRequest
1 голос
/ 11 августа 2009

У меня есть большая (около 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

1 Ответ

3 голосов
/ 11 августа 2009

номер

Это функция 'debian', которую они модифицируют из стандартного MySQL. Он предназначен для того, чтобы люди не сталкивались с проблемами с поврежденными таблицами MyISAM. Поскольку вы используете InnoDB, я бы порекомендовал вам удалить его. Я считаю, что это часть скрипта init.d, так что вы можете отредактировать его, чтобы удалить.

...