Spec-Zone .ru
спецификации, руководства, описания, API

13.7.2.2. CHECK TABLE Синтаксис

CHECK TABLE tbl_name [, tbl_name] ... [option] ...option = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

CHECK TABLE проверяет таблицу или таблицы для ошибок. CHECK TABLE работы для InnoDB, MyISAM, ARCHIVE, и CSV таблицы. Для MyISAM таблицы, ключевые статистические данные обновляются также.

Чтобы проверить таблицу, у Вас должно быть некоторое полномочие для этого.

CHECK TABLE может также проверить представления на проблемы, такие как таблицы, на которые ссылаются в определении представления, которые больше не существуют.

CHECK TABLE поддерживается для разделенных таблиц, и можно использовать ALTER TABLE ... CHECK PARTITION проверять один или более разделов; для получения дополнительной информации см. Раздел 13.1.6,"ALTER TABLE Синтаксис", и Раздел 17.3.4, "Обслуживание Разделов".

В MySQL 5.7.1, gtid_next должен быть установлен в AUTOMATIC прежде, чем сделать это заявление. Это ограничение не применяется в MySQL 5.7.2 или позже. (Ошибка #16062608, Ошибка #16715809, Ошибка #69045)

Вывод

CHECK TABLE возвращает набор результатов со следующими столбцами.

Столбец Значение
Table Имя таблицы
Op Всегда check
Msg_type status, error, info, note, илиwarning
Msg_text Информационное сообщение

Отметьте, что оператор мог бы произвести много строк информации для каждой проверенной таблицы. У последней строки есть a Msg_type значение status и Msg_text обычно должен быть OK. Если Вы не добираетесь OK, или Table is already up to date следует обычно выполнять восстановление таблицы. См. Раздел 7.6,"MyISAM Табличное Обслуживание и Восстановление Катастрофического отказа". Table is already up to date средства, что механизм хранения для таблицы, обозначенной, что не было никакой потребности проверить таблицу.

Проверка Совместимости Версии

FOR UPGRADE опция проверяет, являются ли именованные таблицы совместимыми с текущей версией MySQL. С FOR UPGRADE, сервер проверяет каждую таблицу, чтобы определить, были ли какие-либо несовместимые изменения в каком-либо из типов данных таблицы, или индексирует, так как таблица была составлена. В противном случае проверка успешно выполняется. Иначе, если есть возможная несовместимость, сервер осуществляет полную проверку таблицы (который мог бы занять время). Если полная проверка успешно выполняется, сервер отмечает таблицу .frm файл с текущим номером версии MySQL. Отмечание .frm файл гарантирует, что дальнейшие проверки на таблицу с той же самой версией сервера будут быстры.

Несовместимости могли бы произойти, потому что формат хранения для типа данных изменился или потому что его порядок сортировки изменился. Наша цель состоит в том, чтобы избежать этих изменений, но иногда они необходимы, чтобы исправить проблемы, которые были бы хуже чем несовместимость между выпусками.

В настоящий момент, FOR UPGRADE обнаруживает эти несовместимости:

Проверка Непротиворечивости данных

Другие варианты проверки, которые могут быть даны, показываются в следующей таблице. Эти опции передают к механизму хранения, который может использовать их или нет.

Ввести Значение
QUICK Не сканируйте строки, чтобы проверить на неправильные ссылки. Применяется к InnoDB и MyISAM таблицы и представления.
FAST Проверка только таблицы, которые не были закрыты должным образом. Применяется только к MyISAM таблицы и представления; проигнорированный для InnoDB.
CHANGED Проверка только таблицы, которые были изменены начиная с последней проверки или которые не были закрыты должным образом. Применяется только к MyISAM таблицы и представления; проигнорированный для InnoDB.
MEDIUM Строки сканирования, чтобы проверить, который удалил ссылки, допустимы. Это также вычисляет ключевую контрольную сумму для строк и проверяет это с расчетной контрольной суммой для ключей. Применяется только к MyISAM таблицы и представления; проигнорированный для InnoDB.
EXTENDED Сделайте полный ключевой поиск для всех ключей для каждой строки. Это гарантирует, что таблица является на 100 % непротиворечивой, но занимает много времени. Применяется только к MyISAM таблицы и представления; проигнорированный для InnoDB.

Если ни одна из опций QUICK, MEDIUM, или EXTENDED определяются, тип проверки значения по умолчанию для динамического формата MyISAM таблицы MEDIUM. У этого есть тот же самый результат как работающий myisamchk - средняя проверка tbl_name на таблице. Тип проверки значения по умолчанию также MEDIUM для статического формата MyISAM таблицы, если CHANGED или FAST определяется. В этом случае значение по умолчанию QUICK. Сканирование строки пропускается для CHANGED и FAST потому что строки очень редко повреждаются.

Можно объединить опции проверки, как в следующем примере, который делает быструю проверку на таблице, чтобы определить, было ли это закрыто должным образом:

CHECK TABLE test_table FAST QUICK;
Отметить

В некоторых случаях, CHECK TABLE изменяет таблицу. Это происходит, если таблица отмечается как "повреждено" или "не закрытый должным образом", но CHECK TABLE не находит проблем в таблице. В этом случае, CHECK TABLE отмечает таблицу как хорошо.

Если таблица повреждается, наиболее вероятно, что проблема находится в индексировании а не в части данных. Все предыдущие типы проверки проверяют индексирование полностью и должны таким образом найти большинство ошибок.

Если Вы только хотите проверить таблицу, которую Вы принимаете, хорошо, недопустимо использовать опции проверки или QUICK опция. Последний должен использоваться, когда спешите и можно взять на себя очень маленький риск это QUICK не находит ошибку в файле данных. (В большинстве случаев, при нормальном использовании, MySQL должен найти любую ошибку в файле данных. Если это происходит, таблица отмечается как "повреждено" и не может использоваться, пока она не восстанавливается.)

FAST и CHANGED главным образом предназначаются, чтобы использоваться из сценария (например, чтобы быть выполненным от cron), если Вы хотите проверить таблицы время от времени. В большинстве случаев, FAST должен быть предпочтен CHANGED. (Единственный случай, когда это не предпочитается, - то, когда Вы подозреваете, что нашли ошибку в MyISAM код.)

EXTENDED должен использоваться только после того, как Вы осуществили нормальную проверку, но все еще получаете странные ошибки от таблицы, когда MySQL пытается обновить строку или найти строку ключом. Это очень маловероятно, если нормальная проверка успешно выполнилась.

Использование CHECK TABLE ... EXTENDED мог бы влиять на план выполнения, сгенерированный оптимизатором запросов.

Некоторые проблемы, сообщенные CHECK TABLE не может быть исправлен автоматически:

Таблицы InnoDB

Следующие примечания применяются к InnoDB таблицы: