Spec-Zone.ru › MariaDB

myisamchk

myisamchk — это командная утилита для проверки, восстановления и оптимизации неразделенных таблиц MyISAM.

myisamchk запускается из командной строки следующим образом:

myisamchk [OPTIONS] tables[.MYI]

Полный список опций приведен ниже. Можно указать одну или несколько таблиц MyISAM. У таблиц MyISAM есть связанный с ними файл индекса .MYI, и имя таблицы можно указывать с расширением .MYI или без него. Использование расширения позволяет использовать подстановочные знаки, поэтому можно запустить myisamchk для всех таблиц MyISAM в базе данных с помощью *.MYI.

Путь к файлам также необходимо указать, если они не находятся в текущем каталоге.

myisamchk не следует запускать, пока кто-либо имеет доступ к любым из затронутых таблиц. Также рекомендуется создать резервную копию перед запуском.

Без опций myisamchk просто проверяет таблицу в качестве операции по умолчанию.

Следующие опции можно задать в качестве командных опций для myisamchk или в разделе [myisamchk] файла my.cnf.

Общие опции

Опция Описание
-H, --HELP Показать справку и выйти. Опции представлены в одном списке.
-?, --help Показать справку и выйти. Опции сгруппированы по типу операции.
-debug=options, -# options Записать отладочный журнал. Типичная строка debug_options — ´d:t:o,file_name´. По умолчанию — ´d:t:o,/tmp/myisamchk.trace´. (Доступно только в отладочных сборках)
-t path, --tmpdir=path Путь для временных файлов. На Unix можно указать несколько путей, разделенных двоеточием (:), а на Windows — точкой с запятой (;). Они будут использоваться в циклическом порядке. Если не задано, используется переменная среды TMPDIR.
-s, --silent Выводить только ошибки. Можно использовать две опции -s (-ss), чтобы сделать myisamchk очень тихим.
-v, --verbose Выводить больше информации. Это можно использовать с --description и --check. Используйте несколько -v для большей подробности.
-V, --version Вывести версию и выйти.
-w, --wait Если таблица заблокирована, подождать, вместо возврата ошибки.
--print-defaults Вывести список аргументов программы и выйти.
--no-defaults Не читать опции по умолчанию из файла опций.
--defaults-file=filename Читать опции по умолчанию только из заданного файла filename, который может быть полным путем или путем, относительным к текущему каталогу.
--defaults-extra-file=filename Читать файл filename, который может быть полным путем или путем, относительным к текущему каталогу, после чтения глобальных файлов.
--defaults-group-suffix=str Также читать группы с суффиксом str. Например, --defaults-group-suffix=x будет читать группы [myisamchk] и [myisamchk_x]

Следующие переменные также можно задать, используя --var_name=value, например, --ft_min_word_len=5

Переменная Значение по умолчанию
decode_bits 9
ft_max_word_len зависит от версии
ft_min_word_len 4
ft_stopword_file встроенный список
key_buffer_size 1044480
key_cache_block_size 1024
myisam_block_size 1024
myisam_sort_buffer_size 134216704
myisam_sort_key_blocks 16
read_buffer_size 262136
sort_buffer_size 134216704
sort_key_blocks 16
stats_method nulls_unequal
write_buffer_size 262136

Проверка таблиц

Если опция не указана, myisamchk выполнит проверку таблицы. Можно проверить таблицы MyISAM без остановки или ограничения доступа к серверу, используя CHECK TABLE вместо этого.

Доступны следующие опции проверки:

Опция Описание
-c, --check Проверить таблицу на ошибки. Это операция по умолчанию, если не указана опция, явно выбирающая тип операции.
-e, --extend-check Проверить таблицу очень тщательно. Используйте только в крайних случаях, так как это может быть медленно, и myisamchk обычно должен уметь обнаружить ошибки в таблице даже без этого переключателя. Увеличение key_buffer_size может помочь ускорить процесс.
-F, --fast Проверять только таблицы, которые не были закрыты должным образом.
-C, --check-only-changed Проверить только таблицы, которые изменились с момента последней проверки.
-f, --force Перезапустить с '-r' (восстановить), если в таблице есть какие-либо ошибки. Состояния будут обновлены так же, как и с '--update-state'.
-i, --information Вывести статистическую информацию о проверяемой таблице.
-m, --medium-check Быстрее, чем extend-check, но находит только 99,99% всех ошибок. Достаточно для большинства случаев.
-U --update-state Отметить таблицы как аварийные, если найдены какие-либо ошибки. Это должно использоваться для получения полной пользы от опции --check-only-changed, но вы не должны использовать эту опцию, если сервер mysqld использует таблицу, и вы запускаете его с отключенным внешним блокированием.
-T, --read-only Не отмечать таблицу как проверенную. Это полезно, если вы используете myisamchk для проверки таблицы, которая используется другой программой, не использующей блокировку, например, mysqld, запущенный с отключенным внешним блокированием.

Восстановление таблиц

Также можно восстановить таблицы MyISAM, используя REPAIR TABLE.

Следующие опции восстановления доступны и применимы при использовании '-r' или '-o':

Опция Описание
-B, --backup Создать резервную копию файла .MYD как 'filename-time.BAK'.
--correct-checksum Исправить информацию о контрольной сумме для таблицы.
-D len, --data-file-length=# Максимальная длина файла данных (при повторном создании файла данных, когда он заполнен).
-e, --extend-check Попытаться восстановить каждую возможную строку из файла данных. Обычно это также найдет много мусорных строк; Не используйте эту опцию, если вы не в отчаянии.
-f, --force Перезаписать старые временные файлы. Добавление ещё одного --force позволит избежать ошибок 'myisam_sort_buffer_size слишком мал'. В этом случае мы попытаемся выполнить восстановление с заданным myisam_sort_buffer_size и динамически выделим столько буферов управления, сколько необходимо.
-k val, --keys-used=# Указать, какие ключи обновлять. Значение — битовая маска используемых ключей. Каждый двоичный бит соответствует индексу таблицы, причём первый индекс — бит 0. 0 отключает все обновления индексов, что полезно для более быстрых вставок. Отключенные индексы можно снова включить, используя myisamchk -r.
--create-missing-keys Создать отсутствующие ключи. Это предполагает, что файл данных правильный и что количество строк, хранящихся в файле индекса, правильное. Включает --quick
--max-record-length=# Пропустить строки, длина которых больше этой, если myisamchk не может выделить память для их хранения.
-r, --recover Может исправить практически всё, кроме уникальных ключей, которые не являются уникальными (редкое явление). Обычно это лучшая опция, которую следует попробовать в первую очередь. Увеличьте myisam_sort_buffer_size для лучшей производительности.
-n, --sort-recover Принудительно восстанавливает с сортировкой, даже если временный файл будет очень большим.
-p, --parallel-recover Использует ту же технику, что и '-r' и '-n', но создаёт все ключи параллельно, в разных потоках.
-o, --safe-recover Использует старый метод восстановления; медленнее, чем '-r', но использует меньше места на диске и может обработать несколько случаев, когда '-r' сообщает, что не может исправить файл данных. Увеличьте key_buffer_size для лучшей производительности.
--character-sets-dir=directory_name Директория, где установлены наборы символов.
--set-collation=name Изменить сортировку (и, следовательно, набор символов), используемую индексом.
-q, --quick Более быстрое восстановление, не изменяя файл данных. Можно указать второе '-q', чтобы принудить myisamchk изменить исходный файл данных в случае дублирующих ключей. ПРИМЕЧАНИЕ: Таблицы, где файл данных повреждён, не могут быть исправлены с помощью этой опции.
-u, --unpack Распаковать файл, упакованный с помощью myisampack.

Другие действия

Опция Описание
-a, --analyze Проанализировать распределение ключей. Ускорит некоторые соединения, так как оптимизатор соединений сможет лучше выбрать порядок соединения таблиц и какие индексы использовать. Распределение, вычисленное с помощью '--description --verbose table_name', или SHOW INDEX FROM table_name.
--stats_method=name Указывает, как код сбора статистики индексов должен обрабатывать NULL. Возможные значения name — "nulls_unequal" (по умолчанию), "nulls_equal" (эмулирует поведение MySQL 4.0), и "nulls_ignored".
-d, --description Вывести описательную информацию о таблице. Указание опции --verbose один или два раза даёт дополнительную информацию.
-A [value], --set-auto-increment[=value] Принудительно установить auto_increment к этому или большему значению. Если значение не указано, то устанавливает следующее значение автоинкремента на максимальное использованное значение для автоключа + 1.
-S, --sort-index Отсортировать блоки дерева индексов в порядке убывания. Это оптимизирует поиск и ускоряет сканирование таблиц, использующих индексы.
-R index_num, --sort-records=# Сортировать записи по заданному индексу (как указано номером индекса). Это делает ваши данные намного более локализованными и может ускорить SELECT и ORDER BY, использующие этот индекс. Первое сортирование может быть ОЧЕНЬ медленным! Для просмотра номеров индексов, SHOW INDEX отображает индексы таблиц в том же порядке, что и myisamchk. Первый индекс — 1.
-b offset, --block-search=offset Найти запись, к которой принадлежит блок по заданному offset.

Для более подробной информации см. Использование памяти и диска с myisamchk.

Примеры

Проверить все таблицы MyISAM в текущей директории:

myisamchk *.MYI

Если вы не находитесь в директории базы данных, вы можете проверить все таблицы там, указав путь к директории:

myisamchk /path/to/database_dir/*.MYI

Проверить все таблицы во всех базах данных, указав подстановку с путем к директории данных MariaDB:

myisamchk /path/to/datadir/*/*.MYI

Рекомендуемый способ быстро проверить все таблицы MyISAM:

myisamchk --silent --fast /path/to/datadir/*/*.MYI

Проверить все таблицы MyISAM и исправить все поврежденные:

myisamchk --silent --force --fast --update-state \
  --key_buffer_size=64M --sort_buffer_size=64M \
  --read_buffer_size=1M --write_buffer_size=1M \
  /path/to/datadir/*/*.MYI

См. также

  • Использование памяти и диска с myisamchk
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в данном содержимом, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/myisamchk/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API