8.2.5. myisamchk Memory Usage
Memory allocation is important when you run
uses no more memory than its memory-related variables are set
to. If you are going to use myisamchk on
very large tables, you should first decide how much memory you
want it to use. The default is to use only about 3MB to
perform repairs. By using larger values, you can get
myisamchk to operate faster. For example,
if you have more than 32MB RAM, you could use options such as
these (in addition to any other options you might specify):
myisamchk --sort_buffer_size=16M --key_buffer_size=16M \
--read_buffer_size=1M --write_buffer_size=1M ...
--sort_buffer_size=16M should probably
be enough for most cases.
Be aware that myisamchk uses temporary
TMPDIR points to a memory filesystem, you
may easily get out of memory errors. If this happens, run
myisamchk with the
option to specify some directory located on a filesystem that
has more space.
When repairing, myisamchk also needs a lot
of disk space:
Double the size of the data file (the original file and a
copy). This space is not needed if you do a repair with
--quick; in this case, only the index
file is re-created. This space is needed on the same
filesystem as the original data file! (The copy is created
in the same directory as the original.)
Space for the new index file that replaces the old one.
The old index file is truncated at the start of the repair
operation, so you usually ignore this space. This space is
needed on the same filesystem as the original index file!
--sort-recover (but not when using
--safe-recover), you need space for a
sort buffer. The following formula yields the amount of
number_of_rows × 2
You can check the length of the keys and the
tbl_name. This space
is allocated in the temporary directory (specified by
If you have a problem with disk space during repair, you can
--safe-recover instead of