Ответ 1
Как правило, вам нужно OPTIMIZE-таблицу, когда ее файл данных слишком фрагментирован на диске (используйте инструменты для вашей файловой системы, чтобы проверить - script, связанный с GiantRobot, не вычисляет фрагментацию), когда было много обновленных строк и их размер (что создаст фрагментацию строки) или после удаления многих записей, когда вы не будете добавлять их снова в ближайшее время. Поскольку свободное пространство используется MySQL для новых строк, когда удаленные и новые записи имеют одинаковый размер строки, OPTIMIZE не требуется.
CHECK TABLE используется только тогда, когда вы подозреваете повреждение данных (что не должно происходить при обычном прогоне). В некоторых дистрибутивах Linux (например, Debian) есть сценарии запуска, которые запускают CHECK TABLE для всех таблиц при запуске сервера MySQL. REPAIR TABLE затем используется для восстановления поврежденных таблиц.
ANALYZE TABLE может использоваться для обновления мощности индекса, которая используется при определении плана выполнения запроса. Обычно это необходимо только в особых случаях.
Из вашего вопроса неясно, как используются ваши таблицы статистики... сколько записей, удалений и чтений? Мои таблицы статистики записываются все время, и один раз в день они считываются, данные консолидируются и записываются в другую таблицу, а затем удаляются. В этом случае нет необходимости запускать OPTIMIZE, поскольку данные не часто читаются, а свободное пространство используется для новых данных. Я использую разделение по дням, поэтому вместо удаления записей (что довольно медленно) я просто DROP PARTITION (что занимает 1 сек.)