поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    4.4.6.6. Использование памяти утилитой myisamchk

    При работе myisamchk очень важно распределение памяти. Объем используемой myisamchk памяти не превышает количества, указанного с помощью опций -O. Когда речь идет о применении myisamchk на очень больших файлах, следует сначала принять решение о том, какое количество памяти будет при этом использоваться. По умолчанию для целей исправления ошибок отводится только около 3Mб. Применяя большие величины, можно достичь большей скорости работы myisamchk. К примеру, если имеется более 32Mб оперативной памяти, то можно задать следующие опции (в дополнение к любым другим указанным опциям):

    shell> myisamchk -O sort=16M -O key=16M -O read=1M -O write=1M ...
    

    В большинстве случаев достаточно использовать -O sort=16M.

    Важно понимать, что myisamchk использует временные файлы, для указания на которые служит TMPDIR. Если TMPDIR указывает на файловую систему с размещением в памяти, то велика вероятность ошибок нехватки памяти (out of memory). Если такое произойдет, то в TMPDIR следует поместить имя некоторого другого каталога с большим пространством и перезапустить myisamchk.

    При выполнении ремонта myisamchk также понадобится большое количество дискового пространства; :

    • Потребуется пространство порядка удвоенного размера файла - для оригинала и копии файла данных. В этом пространстве нет необходимости, когда исправление выполняется с --quick, поскольку в этом случае повторно создается только индексный файл. Дополнительное место необходимо на том же диске, где находится оригинальный файл записи!

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

    • При указании --recover или --sort-recover (но не в случае использования --safe-recover) потребуется место для буфера сортировки: (largest_key + row_pointer_length)*number_of_rows * 2. Можно узнать длину ключей и row_pointer_length с помощью myisamchk -dv table. Это пространство выделяется на временном диске (который определяется при помощи TMPDIR либо --tmpdir=#).

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

     
    © 1997-2005 PHP Club Team
    Rambler's Top100