Использование памяти и диска с myisamchk
Производительность myisamchk может значительно улучшиться для больших таблиц, если убедиться, что связанные с памятью переменные установлены на оптимальном уровне.
По умолчанию myisamchk будет использовать очень мало памяти (примерно 3 МБ выделяется), но может временно использовать много дискового пространства. Если дисковое пространство ограничено при восстановлении, следует использовать опцию --safe-recover вместо --recover. Однако, если TMPDIR указывает на файловую систему памяти, ошибка «недостаточно памяти» может легко возникнуть, так как myisamchk размещает временные файлы в TMPDIR. В этом случае следует использовать опцию --tmpdir=путь для указания каталога на диске.
myisamchk имеет следующие требования к дисковому пространству:
- При восстановлении требуется пространство, вдвое превышающее размер файла данных, доступного в том же каталоге, что и исходный файл. Это относится как к исходному файлу, так и к его копии. Это пространство не требуется, если используется опция --quick, в этом случае пересоздается только файл индекса.
- Дисковое пространство во временном каталоге (TMPDIR или опция tmpdir=путь) необходимо для сортировки, если используются опции --recover или --sort-recover, но не используется --safe-recover. Требуемое пространство будет примерно равно (largest_key + длина_указателя_строки) * количество_строк * 2. Чтобы получить информацию о длине ключей и длине указателя строки, используйте myisamchk -dv имя_таблицы.
- Необходимое пространство для нового файла индекса, заменяющего существующий. Старый индекс сначала усекается, поэтому, если старый файл индекса отсутствует или по какой-либо причине меньше, значительного дополнительного пространства не потребуется.
Существует ряд системных переменных, которые полезно настроить при запуске myisamchk. Они увеличат использование памяти, и поскольку некоторые из них являются переменными сессии, вам не следует увеличивать общее значение, но вы можете либо передать увеличенное значение myisamchk в качестве параметра командной строки, либо с помощью раздела [myisamchk] в вашем файле my.cnf.
- sort_buffer_size. По умолчанию это 4 МБ, но очень полезно увеличить его, чтобы ускорить сортировку myisamchk. Поскольку сервер не будет запущен при запуске myisamchk, вы можете существенно увеличить его. 16 МБ обычно являются минимальным значением, но значения, такие как 256 МБ, не являются необычными, если доступна память.
- key_buffer_size (что особенно полезно для опций --extend-check и --safe-recover).
- read_buffer_size
- write_buffer_size
Например, если у вас более 512 МБ доступно для выделения процессу, можно использовать следующие настройки:
myisamchk --myisam_sort_buffer_size=256M --key_buffer_size=512M --read_buffer_size=64M --write_buffer_size=64M ...
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/memory-and-disk-use-with-myisamchk/