Spec-Zone.ru › MySQL 8.4

6.6.4.6 Использование памяти myisamchk

Выделение памяти важно при запуске myisamchk. myisamchk использует не больше памяти, чем установлено для его переменных, связанных с памятью. Если вы собираетесь использовать myisamchk для очень больших таблиц, вы должны сначала определить, сколько памяти вы хотите использовать. По умолчанию используется около 3 МБ для выполнения ремонта. Использование больших значений позволит myisamchk работать быстрее. Например, если у вас доступно более 512 МБ оперативной памяти, вы можете использовать такие параметры (в дополнение к другим параметрам, которые вы можете указать):

myisamchk --myisam_sort_buffer_size=256M \
           --key_buffer_size=512M \
           --read_buffer_size=64M \
           --write_buffer_size=64M ...

Использование --myisam_sort_buffer_size=16M, вероятно, достаточно для большинства случаев.

Обратите внимание, что myisamchk использует временные файлы в TMPDIR. Если TMPDIR указывает на файловую систему памяти, ошибки недостатка памяти могут легко возникать. Если это произойдёт, запустите myisamchk с параметром --tmpdir=dir_name, чтобы указать каталог, расположенный на файловой системе с большим объёмом пространства.

При выполнении операций ремонта myisamchk также требует значительного объёма дискового пространства:

  • В два раза больше размера файла данных (оригинальный файл и его копия). Это пространство не нужно, если вы выполняете ремонт с помощью --quick; в этом случае пересоздаётся только файл индекса. Это пространство должно быть доступно на той же файловой системе, что и исходный файл данных, так как копия создаётся в том же каталоге, что и оригинал.

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

  • При использовании --recover или --sort-recover (но не при использовании --safe-recover), вам нужно дисковое пространство для сортировки. Это пространство выделяется во временном каталоге (указанном параметром TMPDIR или --tmpdir=dir_name). Следующая формула показывает требуемый объём:

    (largest_key + row_pointer_length) * number_of_rows * 2
    

    Вы можете проверить длину ключей и row_pointer_length с помощью myisamchk -dv tbl_name (см. Раздел 6.6.4.5, «Получение информации о таблице с помощью myisamchk»). Значения row_pointer_length и number_of_rows — это значения Datafile pointer и Data records в описании таблицы. Чтобы определить значение largest_key, проверьте строки Key в описании таблицы. Столбец Len указывает количество байтов для каждой части ключа. Для индекса с несколькими столбцами размер ключа — сумма значений Len для всех частей ключа.

Если у вас возникла проблема с дисковым пространством во время ремонта, вы можете попробовать --safe-recover вместо --recover.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/myisamchk-memory.html

Spec-Zone.ru

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