Назад | Перейти на главную страницу

ПРОВЕРКА ТАБЛИЦЫ, блокирующая большую (12 ГБ) таблицу InnoDB в MySQL

У меня проблемы с большой таблицей MySQL InnoDB, и мне было интересно, есть ли у кого-нибудь здесь советы по улучшению стабильности.

У меня проблема в том, что CHECK TABLE ... FAST заблокирует таблицу, предотвращая любое чтение, а для такой большой таблицы это означает, что она отключена в течение часа.

Будет запущена установка Debian по умолчанию CHECK TABLE на все, когда MySQL запускается, и это вызывает простои. На данный момент я отключил эту функцию, но это заставляет меня немного нервничать, когда я использую такие системные настройки.

У меня есть еще одно задание cron, которое массово загружало данные в таблицу, которая использовала ALTER TABLE ... DISABLE KEYS и ALTER TABLE ... ENABLE KEYS, и возможно, что это связано, но я еще не смог это подтвердить.

Кто-нибудь видел ситуации, когда CHECK TABLE предотвращает доступ к большим таблицам InnoDB?

Я писал в ServerFault некоторое время назад чтобы показать, что вы не можете ОТКЛЮЧИТЬ КЛЮЧИ и ВКЛЮЧИТЬ КЛЮЧИ в таблице InnoDB.

ПРОВЕРКА ТАБЛИЦЫ всегда должна блокировать любую таблицу MyISAM или InnoDB.

Вы можете создать сценарий с именем /var/lib/mysql/my_init.sql со следующим

ПРОВЕРИТЬ ТАБЛИЦУ <любая таблица 1>;
ПРОВЕРИТЬ ТАБЛИЦУ <любая таблица 2>;
...

Этот файл должен содержать любое количество таблиц, для которых вы хотите ПРОВЕРИТЬ ТАБЛИЦУ.

Теперь добавьте эту строку в /etc/my.cnf

файл инициализации = / var / lib / mysql / my_init.sql

Затем перезапустите mysql, и будет запущен сценарий настраиваемой таблицы проверки.

Кстати, я надеюсь, что вы используете innodb_file_per_table. Если вы не, пожалуйста прочтите этот URL