Spec-Zone .ru
спецификации, руководства, описания, API
|
Каждый MyISAM
индексный файл (.MYI
файл), имеет
счетчик в заголовке, который может использоваться, чтобы проверить, была ли таблица закрыта должным образом.
Если Вы получаете следующее предупреждение от CHECK
TABLE
или myisamchk, это означает, что этот счетчик вышел из
синхронизации:
clients are using or haven't closed the table properly
Это предупреждение не обязательно означает, что таблица повреждается, но следует, по крайней мере, проверить таблицу.
Счетчик работает следующим образом:
В первый раз, когда таблица обновляется в MySQL, счетчик в заголовке индексных файлов постепенно увеличивается.
Счетчик не изменяется во время дальнейших обновлений.
Когда последний экземпляр таблицы закрывается (потому что a FLUSH TABLES
работа выполнялась или потому что нет никакой комнаты в
табличном кэше), счетчик постепенно уменьшается, если таблица была обновлена в какой-либо точке.
Когда Вы восстанавливаете таблицу или проверяете таблицу, и это, как находят, хорошо, счетчик сбрасывается, чтобы обнулить.
Чтобы избежать проблем со взаимодействием с другими процессами, которые могли бы проверить таблицу, счетчик не постепенно уменьшается на завершении, если это был нуль.
Другими словами счетчик может стать неправильным только при этих условиях:
A MyISAM
таблица копируется без первого издания LOCK TABLES
и
FLUSH
TABLES
.
MySQL отказал между обновлением и финалом близко. (Отметьте, что таблица может все еще быть хорошо, потому что MySQL всегда выпускает записи для всего между каждым оператором.)
Таблица была изменена myisamchk - восстанавливаются или myisamchk - состояние обновления в то же самое время, когда это использовалось mysqld.
Многократные mysqld серверы используют таблицу и один сервер
выполняемый a REPAIR TABLE
или CHECK TABLE
на таблице, в то время как это использовалось другим
сервером. В этой установке безопасно использовать CHECK TABLE
, хотя Вы могли бы получить предупреждение от других
серверов. Однако, REPAIR TABLE
должен избежаться, потому что, когда один сервер заменяет файл данных новым, это не известно другим
серверам.
Вообще, это - плохая идея совместно использовать каталог данных среди многократных серверов. См. Раздел 5.6, "Выполняя Экземпляры MySQL Multiple на Одной Машине", для дополнительного обсуждения.