2507 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			Groff
		
	
	
	
			
		
		
	
	
			2507 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			Groff
		
	
	
	
'\" t
 | 
						|
.\"     Title: \fBmyisamchk\fR
 | 
						|
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
 | 
						|
.\" Generator: DocBook XSL Stylesheets v1.77.1 <http://docbook.sf.net/>
 | 
						|
.\"      Date: 11/04/2013
 | 
						|
.\"    Manual: MySQL Database System
 | 
						|
.\"    Source: MySQL 5.1
 | 
						|
.\"  Language: English
 | 
						|
.\"
 | 
						|
.TH "\FBMYISAMCHK\FR" "1" "11/04/2013" "MySQL 5\&.1" "MySQL Database System"
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * Define some portability stuff
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
.\" http://bugs.debian.org/507673
 | 
						|
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
 | 
						|
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
.ie \n(.g .ds Aq \(aq
 | 
						|
.el       .ds Aq '
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * set default formatting
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" disable hyphenation
 | 
						|
.nh
 | 
						|
.\" disable justification (adjust text to left margin only)
 | 
						|
.ad l
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * MAIN CONTENT STARTS HERE *
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" myisamchk
 | 
						|
.SH "NAME"
 | 
						|
myisamchk \- MyISAM table\-maintenance utility
 | 
						|
.SH "SYNOPSIS"
 | 
						|
.HP \w'\fBmyisamchk\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.\fR\ 'u
 | 
						|
\fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
 | 
						|
.SH "DESCRIPTION"
 | 
						|
.PP
 | 
						|
The
 | 
						|
\fBmyisamchk\fR
 | 
						|
utility gets information about your database tables or checks, repairs, or optimizes them\&.
 | 
						|
\fBmyisamchk\fR
 | 
						|
works with
 | 
						|
MyISAM
 | 
						|
tables (tables that have
 | 
						|
\&.MYD
 | 
						|
and
 | 
						|
\&.MYI
 | 
						|
files for storing data and indexes)\&.
 | 
						|
.PP
 | 
						|
You can also use the
 | 
						|
CHECK TABLE
 | 
						|
and
 | 
						|
REPAIR TABLE
 | 
						|
statements to check and repair
 | 
						|
MyISAM
 | 
						|
tables\&. See
 | 
						|
Section\ \&13.7.2.3, \(lqCHECK TABLE Syntax\(rq, and
 | 
						|
Section\ \&13.7.2.6, \(lqREPAIR TABLE Syntax\(rq\&.
 | 
						|
.PP
 | 
						|
The use of
 | 
						|
\fBmyisamchk\fR
 | 
						|
with partitioned tables is not supported\&.
 | 
						|
.if n \{\
 | 
						|
.sp
 | 
						|
.\}
 | 
						|
.RS 4
 | 
						|
.it 1 an-trap
 | 
						|
.nr an-no-space-flag 1
 | 
						|
.nr an-break-flag 1
 | 
						|
.br
 | 
						|
.ps +1
 | 
						|
\fBCaution\fR
 | 
						|
.ps -1
 | 
						|
.br
 | 
						|
.PP
 | 
						|
It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss\&. Possible causes include but are not limited to file system errors\&.
 | 
						|
.sp .5v
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
Invoke
 | 
						|
\fBmyisamchk\fR
 | 
						|
like this:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
The
 | 
						|
\fIoptions\fR
 | 
						|
specify what you want
 | 
						|
\fBmyisamchk\fR
 | 
						|
to do\&. They are described in the following sections\&. You can also get a list of options by invoking
 | 
						|
\fBmyisamchk \-\-help\fR\&.
 | 
						|
.PP
 | 
						|
With no options,
 | 
						|
\fBmyisamchk\fR
 | 
						|
simply checks your table as the default operation\&. To get more information or to tell
 | 
						|
\fBmyisamchk\fR
 | 
						|
to take corrective action, specify options as described in the following discussion\&.
 | 
						|
.PP
 | 
						|
\fItbl_name\fR
 | 
						|
is the database table you want to check or repair\&. If you run
 | 
						|
\fBmyisamchk\fR
 | 
						|
somewhere other than in the database directory, you must specify the path to the database directory, because
 | 
						|
\fBmyisamchk\fR
 | 
						|
has no idea where the database is located\&. In fact,
 | 
						|
\fBmyisamchk\fR
 | 
						|
does not actually care whether the files you are working on are located in a database directory\&. You can copy the files that correspond to a database table into some other location and perform recovery operations on them there\&.
 | 
						|
.PP
 | 
						|
You can name several tables on the
 | 
						|
\fBmyisamchk\fR
 | 
						|
command line if you wish\&. You can also specify a table by naming its index file (the file with the
 | 
						|
\&.MYI
 | 
						|
suffix)\&. This enables you to specify all tables in a directory by using the pattern
 | 
						|
*\&.MYI\&. For example, if you are in a database directory, you can check all the
 | 
						|
MyISAM
 | 
						|
tables in that directory like this:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk *\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
If you are not in the database directory, you can check all the tables there by specifying the path to the directory:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \fR\fB\fI/path/to/database_dir/\fR\fR\fB*\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
You can even check all tables in all databases by specifying a wildcard with the path to the MySQL data directory:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
The recommended way to quickly check all
 | 
						|
MyISAM
 | 
						|
tables is:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \-\-silent \-\-fast \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
If you want to check all
 | 
						|
MyISAM
 | 
						|
tables and repair any that are corrupted, you can use the following command:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \-\-silent \-\-force \-\-fast \-\-update\-state \e\fR
 | 
						|
          \fB\-\-key_buffer_size=64M \-\-myisam_sort_buffer_size=64M \e\fR
 | 
						|
          \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \e\fR
 | 
						|
          \fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
This command assumes that you have more than 64MB free\&. For more information about memory allocation with
 | 
						|
\fBmyisamchk\fR, see
 | 
						|
the section called \(lqMYISAMCHK MEMORY USAGE\(rq\&.
 | 
						|
.PP
 | 
						|
For additional information about using
 | 
						|
\fBmyisamchk\fR, see
 | 
						|
Section\ \&7.6, \(lqMyISAM Table Maintenance and Crash Recovery\(rq\&.
 | 
						|
.if n \{\
 | 
						|
.sp
 | 
						|
.\}
 | 
						|
.RS 4
 | 
						|
.it 1 an-trap
 | 
						|
.nr an-no-space-flag 1
 | 
						|
.nr an-break-flag 1
 | 
						|
.br
 | 
						|
.ps +1
 | 
						|
\fBImportant\fR
 | 
						|
.ps -1
 | 
						|
.br
 | 
						|
.PP
 | 
						|
\fIYou must ensure that no other program is using the tables while you are running \fR\fI\fBmyisamchk\fR\fR\&. The most effective means of doing so is to shut down the MySQL server while running
 | 
						|
\fBmyisamchk\fR, or to lock all tables that
 | 
						|
\fBmyisamchk\fR
 | 
						|
is being used on\&.
 | 
						|
.PP
 | 
						|
Otherwise, when you run
 | 
						|
\fBmyisamchk\fR, it may display the following error message:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
warning: clients are using or haven\*(Aqt closed the table properly
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
This means that you are trying to check a table that has been updated by another program (such as the
 | 
						|
\fBmysqld\fR
 | 
						|
server) that hasn\*(Aqt yet closed the file or that has died without closing the file properly, which can sometimes lead to the corruption of one or more
 | 
						|
MyISAM
 | 
						|
tables\&.
 | 
						|
.PP
 | 
						|
If
 | 
						|
\fBmysqld\fR
 | 
						|
is running, you must force it to flush any table modifications that are still buffered in memory by using
 | 
						|
FLUSH TABLES\&. You should then ensure that no one is using the tables while you are running
 | 
						|
\fBmyisamchk\fR
 | 
						|
.PP
 | 
						|
However, the easiest way to avoid this problem is to use
 | 
						|
CHECK TABLE
 | 
						|
instead of
 | 
						|
\fBmyisamchk\fR
 | 
						|
to check tables\&. See
 | 
						|
Section\ \&13.7.2.3, \(lqCHECK TABLE Syntax\(rq\&.
 | 
						|
.sp .5v
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBmyisamchk\fR
 | 
						|
supports the following options, which can be specified on the command line or in the
 | 
						|
[myisamchk]
 | 
						|
group of an option file\&.
 | 
						|
\fBmyisamchk\fR
 | 
						|
also supports the options for processing option files described at
 | 
						|
Section\ \&4.2.3.4, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
 | 
						|
.SH "MYISAMCHK GENERAL OPTIONS"
 | 
						|
.\" options: myisamchk
 | 
						|
.\" myisamchk: options
 | 
						|
.PP
 | 
						|
The options described in this section can be used for any type of table maintenance operation performed by
 | 
						|
\fBmyisamchk\fR\&. The sections following this one describe options that pertain only to specific operations, such as table checking or repairing\&.
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: help option
 | 
						|
.\" help option: myisamchk
 | 
						|
\fB\-\-help\fR,
 | 
						|
\fB\-?\fR
 | 
						|
.sp
 | 
						|
Display a help message and exit\&. Options are grouped by type of operation\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: HELP option
 | 
						|
.\" HELP option: myisamchk
 | 
						|
\fB\-\-HELP\fR,
 | 
						|
\fB\-H\fR
 | 
						|
.sp
 | 
						|
Display a help message and exit\&. Options are presented in a single list\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: debug option
 | 
						|
.\" debug option: myisamchk
 | 
						|
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR,
 | 
						|
\fB\-# \fR\fB\fIdebug_options\fR\fR
 | 
						|
.sp
 | 
						|
Write a debugging log\&. A typical
 | 
						|
\fIdebug_options\fR
 | 
						|
string is
 | 
						|
\*(Aqd:t:o,\fIfile_name\fR\*(Aq\&. The default is
 | 
						|
\*(Aqd:t:o,/tmp/myisamchk\&.trace\*(Aq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: silent option
 | 
						|
.\" silent option: myisamchk
 | 
						|
\fB\-\-silent\fR,
 | 
						|
\fB\-s\fR
 | 
						|
.sp
 | 
						|
Silent mode\&. Write output only when errors occur\&. You can use
 | 
						|
\fB\-s\fR
 | 
						|
twice (\fB\-ss\fR) to make
 | 
						|
\fBmyisamchk\fR
 | 
						|
very silent\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: verbose option
 | 
						|
.\" verbose option: myisamchk
 | 
						|
\fB\-\-verbose\fR,
 | 
						|
\fB\-v\fR
 | 
						|
.sp
 | 
						|
Verbose mode\&. Print more information about what the program does\&. This can be used with
 | 
						|
\fB\-d\fR
 | 
						|
and
 | 
						|
\fB\-e\fR\&. Use
 | 
						|
\fB\-v\fR
 | 
						|
multiple times (\fB\-vv\fR,
 | 
						|
\fB\-vvv\fR) for even more output\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: version option
 | 
						|
.\" version option: myisamchk
 | 
						|
\fB\-\-version\fR,
 | 
						|
\fB\-V\fR
 | 
						|
.sp
 | 
						|
Display version information and exit\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: wait option
 | 
						|
.\" wait option: myisamchk
 | 
						|
\fB\-\-wait\fR,
 | 
						|
\fB\-w\fR
 | 
						|
.sp
 | 
						|
Instead of terminating with an error if the table is locked, wait until the table is unlocked before continuing\&. If you are running
 | 
						|
\fBmysqld\fR
 | 
						|
with external locking disabled, the table can be locked only by another
 | 
						|
\fBmyisamchk\fR
 | 
						|
command\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
You can also set the following variables by using
 | 
						|
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
 | 
						|
syntax:
 | 
						|
.\" decode_bits myisamchk variable
 | 
						|
.\" ft_max_word_len myisamchk variable
 | 
						|
.\" ft_min_word_len myisamchk variable
 | 
						|
.\" ft_stopword_file myisamchk variable
 | 
						|
.\" key_buffer_size myisamchk variable
 | 
						|
.\" myisam_block_size myisamchk variable
 | 
						|
.\" read_buffer_size myisamchk variable
 | 
						|
.\" sort_buffer_size myisamchk variable
 | 
						|
.\" myisam_sort_buffer_size myisamchk variable
 | 
						|
.\" sort_key_blocks myisamchk variable
 | 
						|
.\" stats_method myisamchk variable
 | 
						|
.\" write_buffer_size myisamchk variable
 | 
						|
.TS
 | 
						|
allbox tab(:);
 | 
						|
lB lB.
 | 
						|
T{
 | 
						|
Variable
 | 
						|
T}:T{
 | 
						|
Default Value
 | 
						|
T}
 | 
						|
.T&
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l
 | 
						|
l l.
 | 
						|
T{
 | 
						|
decode_bits
 | 
						|
T}:T{
 | 
						|
9
 | 
						|
T}
 | 
						|
T{
 | 
						|
ft_max_word_len
 | 
						|
T}:T{
 | 
						|
version\-dependent
 | 
						|
T}
 | 
						|
T{
 | 
						|
ft_min_word_len
 | 
						|
T}:T{
 | 
						|
4
 | 
						|
T}
 | 
						|
T{
 | 
						|
ft_stopword_file
 | 
						|
T}:T{
 | 
						|
built\-in list
 | 
						|
T}
 | 
						|
T{
 | 
						|
key_buffer_size
 | 
						|
T}:T{
 | 
						|
523264
 | 
						|
T}
 | 
						|
T{
 | 
						|
myisam_block_size
 | 
						|
T}:T{
 | 
						|
1024
 | 
						|
T}
 | 
						|
T{
 | 
						|
myisam_sort_key_blocks
 | 
						|
T}:T{
 | 
						|
16
 | 
						|
T}
 | 
						|
T{
 | 
						|
read_buffer_size
 | 
						|
T}:T{
 | 
						|
262136
 | 
						|
T}
 | 
						|
T{
 | 
						|
sort_buffer_size
 | 
						|
T}:T{
 | 
						|
2097144
 | 
						|
T}
 | 
						|
T{
 | 
						|
sort_key_blocks
 | 
						|
T}:T{
 | 
						|
16
 | 
						|
T}
 | 
						|
T{
 | 
						|
stats_method
 | 
						|
T}:T{
 | 
						|
nulls_unequal
 | 
						|
T}
 | 
						|
T{
 | 
						|
write_buffer_size
 | 
						|
T}:T{
 | 
						|
262136
 | 
						|
T}
 | 
						|
.TE
 | 
						|
.sp 1
 | 
						|
.PP
 | 
						|
The possible
 | 
						|
\fBmyisamchk\fR
 | 
						|
variables and their default values can be examined with
 | 
						|
\fBmyisamchk \-\-help\fR:
 | 
						|
.PP
 | 
						|
sort_buffer_size
 | 
						|
is used when the keys are repaired by sorting keys, which is the normal case when you use
 | 
						|
\fB\-\-recover\fR\&. As of MySQL 5\&.1\&.67,
 | 
						|
myisam_sort_buffer_size
 | 
						|
is available as an alternative name to
 | 
						|
sort_buffer_size\&.
 | 
						|
myisam_sort_buffer_size
 | 
						|
is preferable to
 | 
						|
sort_buffer_size
 | 
						|
because its name corresponds to the
 | 
						|
myisam_sort_buffer_size
 | 
						|
server system variable that has a similar meaning\&.
 | 
						|
sort_buffer_size
 | 
						|
should be considered deprecated\&.
 | 
						|
.PP
 | 
						|
key_buffer_size
 | 
						|
is used when you are checking the table with
 | 
						|
\fB\-\-extend\-check\fR
 | 
						|
or when the keys are repaired by inserting keys row by row into the table (like when doing normal inserts)\&. Repairing through the key buffer is used in the following cases:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
You use
 | 
						|
\fB\-\-safe\-recover\fR\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
The temporary files needed to sort the keys would be more than twice as big as when creating the key file directly\&. This is often the case when you have large key values for
 | 
						|
CHAR,
 | 
						|
VARCHAR, or
 | 
						|
TEXT
 | 
						|
columns, because the sort operation needs to store the complete key values as it proceeds\&. If you have lots of temporary space and you can force
 | 
						|
\fBmyisamchk\fR
 | 
						|
to repair by sorting, you can use the
 | 
						|
\fB\-\-sort\-recover\fR
 | 
						|
option\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
Repairing through the key buffer takes much less disk space than using sorting, but is also much slower\&.
 | 
						|
.PP
 | 
						|
If you want a faster repair, set the
 | 
						|
key_buffer_size
 | 
						|
and
 | 
						|
myisam_sort_buffer_size
 | 
						|
variables to about 25% of your available memory\&. You can set both variables to large values, because only one of them is used at a time\&.
 | 
						|
.PP
 | 
						|
myisam_block_size
 | 
						|
is the size used for index blocks\&.
 | 
						|
.PP
 | 
						|
stats_method
 | 
						|
influences how
 | 
						|
NULL
 | 
						|
values are treated for index statistics collection when the
 | 
						|
\fB\-\-analyze\fR
 | 
						|
option is given\&. It acts like the
 | 
						|
myisam_stats_method
 | 
						|
system variable\&. For more information, see the description of
 | 
						|
myisam_stats_method
 | 
						|
in
 | 
						|
Section\ \&5.1.4, \(lqServer System Variables\(rq, and
 | 
						|
Section\ \&8.5.4, \(lqInnoDB and MyISAM Index Statistics Collection\(rq\&.
 | 
						|
.PP
 | 
						|
ft_min_word_len
 | 
						|
and
 | 
						|
ft_max_word_len
 | 
						|
indicate the minimum and maximum word length for
 | 
						|
FULLTEXT
 | 
						|
indexes\&.
 | 
						|
ft_stopword_file
 | 
						|
names the stopword file\&. These need to be set under the following circumstances\&.
 | 
						|
.PP
 | 
						|
If you use
 | 
						|
\fBmyisamchk\fR
 | 
						|
to perform an operation that modifies table indexes (such as repair or analyze), the
 | 
						|
FULLTEXT
 | 
						|
indexes are rebuilt using the default full\-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise\&. This can result in queries failing\&.
 | 
						|
.PP
 | 
						|
The problem occurs because these parameters are known only by the server\&. They are not stored in
 | 
						|
MyISAM
 | 
						|
index files\&. To avoid the problem if you have modified the minimum or maximum word length or the stopword file in the server, specify the same
 | 
						|
ft_min_word_len,
 | 
						|
ft_max_word_len, and
 | 
						|
ft_stopword_file
 | 
						|
values to
 | 
						|
\fBmyisamchk\fR
 | 
						|
that you use for
 | 
						|
\fBmysqld\fR\&. For example, if you have set the minimum word length to 3, you can repair a table with
 | 
						|
\fBmyisamchk\fR
 | 
						|
like this:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \-\-recover \-\-ft_min_word_len=3 \fR\fB\fItbl_name\fR\fR\fB\&.MYI\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
To ensure that
 | 
						|
\fBmyisamchk\fR
 | 
						|
and the server use the same values for full\-text parameters, you can place each one in both the
 | 
						|
[mysqld]
 | 
						|
and
 | 
						|
[myisamchk]
 | 
						|
sections of an option file:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
[mysqld]
 | 
						|
ft_min_word_len=3
 | 
						|
[myisamchk]
 | 
						|
ft_min_word_len=3
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
An alternative to using
 | 
						|
\fBmyisamchk\fR
 | 
						|
is to use the
 | 
						|
REPAIR TABLE,
 | 
						|
ANALYZE TABLE,
 | 
						|
OPTIMIZE TABLE, or
 | 
						|
ALTER TABLE\&. These statements are performed by the server, which knows the proper full\-text parameter values to use\&.
 | 
						|
.SH "MYISAMCHK CHECK OPTIONS"
 | 
						|
.\" check options: myisamchk
 | 
						|
.\" tables: checking
 | 
						|
.PP
 | 
						|
\fBmyisamchk\fR
 | 
						|
supports the following options for table checking operations:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: check option
 | 
						|
.\" check option: myisamchk
 | 
						|
\fB\-\-check\fR,
 | 
						|
\fB\-c\fR
 | 
						|
.sp
 | 
						|
Check the table for errors\&. This is the default operation if you specify no option that selects an operation type explicitly\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: check-only-changed option
 | 
						|
.\" check-only-changed option: myisamchk
 | 
						|
\fB\-\-check\-only\-changed\fR,
 | 
						|
\fB\-C\fR
 | 
						|
.sp
 | 
						|
Check only tables that have changed since the last check\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: extend-check option
 | 
						|
.\" extend-check option: myisamchk
 | 
						|
\fB\-\-extend\-check\fR,
 | 
						|
\fB\-e\fR
 | 
						|
.sp
 | 
						|
Check the table very thoroughly\&. This is quite slow if the table has many indexes\&. This option should only be used in extreme cases\&. Normally,
 | 
						|
\fBmyisamchk\fR
 | 
						|
or
 | 
						|
\fBmyisamchk \-\-medium\-check\fR
 | 
						|
should be able to determine whether there are any errors in the table\&.
 | 
						|
.sp
 | 
						|
If you are using
 | 
						|
\fB\-\-extend\-check\fR
 | 
						|
and have plenty of memory, setting the
 | 
						|
key_buffer_size
 | 
						|
variable to a large value helps the repair operation run faster\&.
 | 
						|
.sp
 | 
						|
See also the description of this option under table repair options\&.
 | 
						|
.sp
 | 
						|
For a description of the output format, see
 | 
						|
the section called \(lqOBTAINING TABLE INFORMATION WITH MYISAMCHK\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: fast option
 | 
						|
.\" fast option: myisamchk
 | 
						|
\fB\-\-fast\fR,
 | 
						|
\fB\-F\fR
 | 
						|
.sp
 | 
						|
Check only tables that haven\*(Aqt been closed properly\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: force option
 | 
						|
.\" force option: myisamchk
 | 
						|
\fB\-\-force\fR,
 | 
						|
\fB\-f\fR
 | 
						|
.sp
 | 
						|
Do a repair operation automatically if
 | 
						|
\fBmyisamchk\fR
 | 
						|
finds any errors in the table\&. The repair type is the same as that specified with the
 | 
						|
\fB\-\-recover\fR
 | 
						|
or
 | 
						|
\fB\-r\fR
 | 
						|
option\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: information option
 | 
						|
.\" information option: myisamchk
 | 
						|
\fB\-\-information\fR,
 | 
						|
\fB\-i\fR
 | 
						|
.sp
 | 
						|
Print informational statistics about the table that is checked\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: medium-check option
 | 
						|
.\" medium-check option: myisamchk
 | 
						|
\fB\-\-medium\-check\fR,
 | 
						|
\fB\-m\fR
 | 
						|
.sp
 | 
						|
Do a check that is faster than an
 | 
						|
\fB\-\-extend\-check\fR
 | 
						|
operation\&. This finds only 99\&.99% of all errors, which should be good enough in most cases\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: read-only option
 | 
						|
.\" read-only option: myisamchk
 | 
						|
\fB\-\-read\-only\fR,
 | 
						|
\fB\-T\fR
 | 
						|
.sp
 | 
						|
Do not mark the table as checked\&. This is useful if you use
 | 
						|
\fBmyisamchk\fR
 | 
						|
to check a table that is in use by some other application that does not use locking, such as
 | 
						|
\fBmysqld\fR
 | 
						|
when run with external locking disabled\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: update-state option
 | 
						|
.\" update-state option: myisamchk
 | 
						|
\fB\-\-update\-state\fR,
 | 
						|
\fB\-U\fR
 | 
						|
.sp
 | 
						|
Store information in the
 | 
						|
\&.MYI
 | 
						|
file to indicate when the table was checked and whether the table crashed\&. This should be used to get full benefit of the
 | 
						|
\fB\-\-check\-only\-changed\fR
 | 
						|
option, but you shouldn\*(Aqt use this option if the
 | 
						|
\fBmysqld\fR
 | 
						|
server is using the table and you are running it with external locking disabled\&.
 | 
						|
.RE
 | 
						|
.SH "MYISAMCHK REPAIR OPTIONS"
 | 
						|
.\" repair options: myisamchk
 | 
						|
.\" files: repairing
 | 
						|
.PP
 | 
						|
\fBmyisamchk\fR
 | 
						|
supports the following options for table repair operations (operations performed when an option such as
 | 
						|
\fB\-\-recover\fR
 | 
						|
or
 | 
						|
\fB\-\-safe\-recover\fR
 | 
						|
is given):
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: backup option
 | 
						|
.\" backup option: myisamchk
 | 
						|
\fB\-\-backup\fR,
 | 
						|
\fB\-B\fR
 | 
						|
.sp
 | 
						|
Make a backup of the
 | 
						|
\&.MYD
 | 
						|
file as
 | 
						|
\fIfile_name\fR\-\fItime\fR\&.BAK
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: character-sets-dir option
 | 
						|
.\" character-sets-dir option: myisamchk
 | 
						|
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
 | 
						|
.sp
 | 
						|
The directory where character sets are installed\&. See
 | 
						|
Section\ \&10.5, \(lqCharacter Set Configuration\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: correct-checksum option
 | 
						|
.\" correct-checksum option: myisamchk
 | 
						|
\fB\-\-correct\-checksum\fR
 | 
						|
.sp
 | 
						|
Correct the checksum information for the table\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: data-file-length option
 | 
						|
.\" data-file-length option: myisamchk
 | 
						|
\fB\-\-data\-file\-length=\fR\fB\fIlen\fR\fR,
 | 
						|
\fB\-D \fR\fB\fIlen\fR\fR
 | 
						|
.sp
 | 
						|
The maximum length of the data file (when re\-creating data file when it is
 | 
						|
\(lqfull\(rq)\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: extend-check option
 | 
						|
.\" extend-check option: myisamchk
 | 
						|
\fB\-\-extend\-check\fR,
 | 
						|
\fB\-e\fR
 | 
						|
.sp
 | 
						|
Do a repair that tries to recover every possible row from the data file\&. Normally, this also finds a lot of garbage rows\&. Do not use this option unless you are desperate\&.
 | 
						|
.sp
 | 
						|
See also the description of this option under table checking options\&.
 | 
						|
.sp
 | 
						|
For a description of the output format, see
 | 
						|
the section called \(lqOBTAINING TABLE INFORMATION WITH MYISAMCHK\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: force option
 | 
						|
.\" force option: myisamchk
 | 
						|
\fB\-\-force\fR,
 | 
						|
\fB\-f\fR
 | 
						|
.sp
 | 
						|
Overwrite old intermediate files (files with names like
 | 
						|
\fItbl_name\fR\&.TMD) instead of aborting\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: keys-used option
 | 
						|
.\" keys-used option: myisamchk
 | 
						|
\fB\-\-keys\-used=\fR\fB\fIval\fR\fR,
 | 
						|
\fB\-k \fR\fB\fIval\fR\fR
 | 
						|
.sp
 | 
						|
For
 | 
						|
\fBmyisamchk\fR, the option value is a bit\-value that indicates which indexes to update\&. Each binary bit of the option value corresponds to a table index, where the first index is bit 0\&. An option value of 0 disables updates to all indexes, which can be used to get faster inserts\&. Deactivated indexes can be reactivated by using
 | 
						|
\fBmyisamchk \-r\fR\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: no-symlinks option
 | 
						|
.\" no-symlinks option: myisamchk
 | 
						|
\fB\-\-no\-symlinks\fR,
 | 
						|
\fB\-l\fR
 | 
						|
.sp
 | 
						|
Do not follow symbolic links\&. Normally
 | 
						|
\fBmyisamchk\fR
 | 
						|
repairs the table that a symlink points to\&. This option does not exist as of MySQL 4\&.0 because versions from 4\&.0 on do not remove symlinks during repair operations\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: max-record-length option
 | 
						|
.\" max-record-length option: myisamchk
 | 
						|
\fB\-\-max\-record\-length=\fR\fB\fIlen\fR\fR
 | 
						|
.sp
 | 
						|
Skip rows larger than the given length if
 | 
						|
\fBmyisamchk\fR
 | 
						|
cannot allocate memory to hold them\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: parallel-recover option
 | 
						|
.\" parallel-recover option: myisamchk
 | 
						|
\fB\-\-parallel\-recover\fR,
 | 
						|
\fB\-p\fR
 | 
						|
.sp
 | 
						|
Use the same technique as
 | 
						|
\fB\-r\fR
 | 
						|
and
 | 
						|
\fB\-n\fR, but create all the keys in parallel, using different threads\&.
 | 
						|
\fIThis is beta\-quality code\&. Use at your own risk!\fR
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: quick option
 | 
						|
.\" quick option: myisamchk
 | 
						|
\fB\-\-quick\fR,
 | 
						|
\fB\-q\fR
 | 
						|
.sp
 | 
						|
Achieve a faster repair by modifying only the index file, not the data file\&. You can specify this option twice to force
 | 
						|
\fBmyisamchk\fR
 | 
						|
to modify the original data file in case of duplicate keys\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: recover option
 | 
						|
.\" recover option: myisamchk
 | 
						|
\fB\-\-recover\fR,
 | 
						|
\fB\-r\fR
 | 
						|
.sp
 | 
						|
Do a repair that can fix almost any problem except unique keys that are not unique (which is an extremely unlikely error with
 | 
						|
MyISAM
 | 
						|
tables)\&. If you want to recover a table, this is the option to try first\&. You should try
 | 
						|
\fB\-\-safe\-recover\fR
 | 
						|
only if
 | 
						|
\fBmyisamchk\fR
 | 
						|
reports that the table cannot be recovered using
 | 
						|
\fB\-\-recover\fR\&. (In the unlikely case that
 | 
						|
\fB\-\-recover\fR
 | 
						|
fails, the data file remains intact\&.)
 | 
						|
.sp
 | 
						|
If you have lots of memory, you should increase the value of
 | 
						|
myisam_sort_buffer_size\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: safe-recover option
 | 
						|
.\" safe-recover option: myisamchk
 | 
						|
\fB\-\-safe\-recover\fR,
 | 
						|
\fB\-o\fR
 | 
						|
.sp
 | 
						|
Do a repair using an old recovery method that reads through all rows in order and updates all index trees based on the rows found\&. This is an order of magnitude slower than
 | 
						|
\fB\-\-recover\fR, but can handle a couple of very unlikely cases that
 | 
						|
\fB\-\-recover\fR
 | 
						|
cannot\&. This recovery method also uses much less disk space than
 | 
						|
\fB\-\-recover\fR\&. Normally, you should repair first using
 | 
						|
\fB\-\-recover\fR, and then with
 | 
						|
\fB\-\-safe\-recover\fR
 | 
						|
only if
 | 
						|
\fB\-\-recover\fR
 | 
						|
fails\&.
 | 
						|
.sp
 | 
						|
If you have lots of memory, you should increase the value of
 | 
						|
key_buffer_size\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: set-character-set option
 | 
						|
.\" set-character-set option: myisamchk
 | 
						|
\fB\-\-set\-character\-set=\fR\fB\fIname\fR\fR
 | 
						|
.sp
 | 
						|
Change the character set used by the table indexes\&. This option was replaced by
 | 
						|
\fB\-\-set\-collation\fR
 | 
						|
in MySQL 5\&.0\&.3\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: set-collation option
 | 
						|
.\" set-collation option: myisamchk
 | 
						|
\fB\-\-set\-collation=\fR\fB\fIname\fR\fR
 | 
						|
.sp
 | 
						|
Specify the collation to use for sorting table indexes\&. The character set name is implied by the first part of the collation name\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: sort-recover option
 | 
						|
.\" sort-recover option: myisamchk
 | 
						|
\fB\-\-sort\-recover\fR,
 | 
						|
\fB\-n\fR
 | 
						|
.sp
 | 
						|
Force
 | 
						|
\fBmyisamchk\fR
 | 
						|
to use sorting to resolve the keys even if the temporary files would be very large\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: tmpdir option
 | 
						|
.\" tmpdir option: myisamchk
 | 
						|
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
 | 
						|
\fB\-t \fR\fB\fIpath\fR\fR
 | 
						|
.sp
 | 
						|
The path of the directory to be used for storing temporary files\&. If this is not set,
 | 
						|
\fBmyisamchk\fR
 | 
						|
uses the value of the
 | 
						|
TMPDIR
 | 
						|
environment variable\&.
 | 
						|
\fB\-\-tmpdir\fR
 | 
						|
can be set to a list of directory paths that are used successively in round\-robin fashion for creating temporary files\&. The separator character between directory names is the colon (\(lq:\(rq) on Unix and the semicolon (\(lq;\(rq) on Windows, NetWare, and OS/2\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: unpack option
 | 
						|
.\" unpack option: myisamchk
 | 
						|
\fB\-\-unpack\fR,
 | 
						|
\fB\-u\fR
 | 
						|
.sp
 | 
						|
Unpack a table that was packed with
 | 
						|
\fBmyisampack\fR\&.
 | 
						|
.RE
 | 
						|
.SH "OTHER MYISAMCHK OPTIONS"
 | 
						|
.PP
 | 
						|
\fBmyisamchk\fR
 | 
						|
supports the following options for actions other than table checks and repairs:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: analyze option
 | 
						|
.\" analyze option: myisamchk
 | 
						|
\fB\-\-analyze\fR,
 | 
						|
\fB\-a\fR
 | 
						|
.sp
 | 
						|
Analyze the distribution of key values\&. This improves join performance by enabling the join optimizer to better choose the order in which to join the tables and which indexes it should use\&. To obtain information about the key distribution, use a
 | 
						|
\fBmyisamchk \-\-description \-\-verbose \fR\fB\fItbl_name\fR\fR
 | 
						|
command or the
 | 
						|
SHOW INDEX FROM \fItbl_name\fR
 | 
						|
statement\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: block-search option
 | 
						|
.\" block-search option: myisamchk
 | 
						|
\fB\-\-block\-search=\fR\fB\fIoffset\fR\fR,
 | 
						|
\fB\-b \fR\fB\fIoffset\fR\fR
 | 
						|
.sp
 | 
						|
Find the record that a block at the given offset belongs to\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: description option
 | 
						|
.\" description option: myisamchk
 | 
						|
\fB\-\-description\fR,
 | 
						|
\fB\-d\fR
 | 
						|
.sp
 | 
						|
Print some descriptive information about the table\&. Specifying the
 | 
						|
\fB\-\-verbose\fR
 | 
						|
option once or twice produces additional information\&. See
 | 
						|
the section called \(lqOBTAINING TABLE INFORMATION WITH MYISAMCHK\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: set-auto-increment[ option
 | 
						|
.\" set-auto-increment[ option: myisamchk
 | 
						|
\fB\-\-set\-auto\-increment[=\fR\fB\fIvalue\fR\fR\fB]\fR,
 | 
						|
\fB\-A[\fR\fB\fIvalue\fR\fR\fB]\fR
 | 
						|
.sp
 | 
						|
Force
 | 
						|
AUTO_INCREMENT
 | 
						|
numbering for new records to start at the given value (or higher, if there are existing records with
 | 
						|
AUTO_INCREMENT
 | 
						|
values this large)\&. If
 | 
						|
\fIvalue\fR
 | 
						|
is not specified,
 | 
						|
AUTO_INCREMENT
 | 
						|
numbers for new records begin with the largest value currently in the table, plus one\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: sort-index option
 | 
						|
.\" sort-index option: myisamchk
 | 
						|
\fB\-\-sort\-index\fR,
 | 
						|
\fB\-S\fR
 | 
						|
.sp
 | 
						|
Sort the index tree blocks in high\-low order\&. This optimizes seeks and makes table scans that use indexes faster\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
.\" myisamchk: sort-records option
 | 
						|
.\" sort-records option: myisamchk
 | 
						|
\fB\-\-sort\-records=\fR\fB\fIN\fR\fR,
 | 
						|
\fB\-R \fR\fB\fIN\fR\fR
 | 
						|
.sp
 | 
						|
Sort records according to a particular index\&. This makes your data much more localized and may speed up range\-based
 | 
						|
SELECT
 | 
						|
and
 | 
						|
ORDER BY
 | 
						|
operations that use this index\&. (The first time you use this option to sort a table, it may be very slow\&.) To determine a table\*(Aqs index numbers, use
 | 
						|
SHOW INDEX, which displays a table\*(Aqs indexes in the same order that
 | 
						|
\fBmyisamchk\fR
 | 
						|
sees them\&. Indexes are numbered beginning with 1\&.
 | 
						|
.sp
 | 
						|
If keys are not packed (PACK_KEYS=0), they have the same length, so when
 | 
						|
\fBmyisamchk\fR
 | 
						|
sorts and moves records, it just overwrites record offsets in the index\&. If keys are packed (PACK_KEYS=1),
 | 
						|
\fBmyisamchk\fR
 | 
						|
must unpack key blocks first, then re\-create indexes and pack the key blocks again\&. (In this case, re\-creating indexes is faster than updating offsets for each index\&.)
 | 
						|
.RE
 | 
						|
.SH "OBTAINING TABLE INFORMATION WITH MYISAMCHK"
 | 
						|
.\" table description: myisamchk
 | 
						|
.\" tables: information
 | 
						|
.\" examples: myisamchk output
 | 
						|
.\" myisamchk: example output
 | 
						|
.PP
 | 
						|
To obtain a description of a
 | 
						|
MyISAM
 | 
						|
table or statistics about it, use the commands shown here\&. The output from these commands is explained later in this section\&.
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
\fBmyisamchk \-d \fR\fB\fItbl_name\fR\fR
 | 
						|
.sp
 | 
						|
Runs
 | 
						|
\fBmyisamchk\fR
 | 
						|
in
 | 
						|
\(lqdescribe mode\(rq
 | 
						|
to produce a description of your table\&. If you start the MySQL server with external locking disabled,
 | 
						|
\fBmyisamchk\fR
 | 
						|
may report an error for a table that is updated while it runs\&. However, because
 | 
						|
\fBmyisamchk\fR
 | 
						|
does not change the table in describe mode, there is no risk of destroying data\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR
 | 
						|
.sp
 | 
						|
Adding
 | 
						|
\fB\-v\fR
 | 
						|
runs
 | 
						|
\fBmyisamchk\fR
 | 
						|
in verbose mode so that it produces more information about the table\&. Adding
 | 
						|
\fB\-v\fR
 | 
						|
a second time produces even more information\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
\fBmyisamchk \-eis \fR\fB\fItbl_name\fR\fR
 | 
						|
.sp
 | 
						|
Shows only the most important information from a table\&. This operation is slow because it must read the entire table\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
\fBmyisamchk \-eiv \fR\fB\fItbl_name\fR\fR
 | 
						|
.sp
 | 
						|
This is like
 | 
						|
\fB\-eis\fR, but tells you what is being done\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
The
 | 
						|
\fItbl_name\fR
 | 
						|
argument can be either the name of a
 | 
						|
MyISAM
 | 
						|
table or the name of its index file, as described in
 | 
						|
\fBmyisamchk\fR(1)\&. Multiple
 | 
						|
\fItbl_name\fR
 | 
						|
arguments can be given\&.
 | 
						|
.PP
 | 
						|
Suppose that a table named
 | 
						|
person
 | 
						|
has the following structure\&. (The
 | 
						|
MAX_ROWS
 | 
						|
table option is included so that in the example output from
 | 
						|
\fBmyisamchk\fR
 | 
						|
shown later, some values are smaller and fit the output format more easily\&.)
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
CREATE TABLE person
 | 
						|
(
 | 
						|
  id         INT NOT NULL AUTO_INCREMENT,
 | 
						|
  last_name  VARCHAR(20) NOT NULL,
 | 
						|
  first_name VARCHAR(20) NOT NULL,
 | 
						|
  birth      DATE,
 | 
						|
  death      DATE,
 | 
						|
  PRIMARY KEY (id),
 | 
						|
  INDEX (last_name, first_name),
 | 
						|
  INDEX (birth)
 | 
						|
) MAX_ROWS = 1000000;
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
Suppose also that the table has these data and index file sizes:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
\-rw\-rw\-\-\-\-  1 mysql  mysql  9347072 Aug 19 11:47 person\&.MYD
 | 
						|
\-rw\-rw\-\-\-\-  1 mysql  mysql  6066176 Aug 19 11:47 person\&.MYI
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
Example of
 | 
						|
\fBmyisamchk \-dvv\fR
 | 
						|
output:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
MyISAM file:         person
 | 
						|
Record format:       Packed
 | 
						|
Character set:       latin1_swedish_ci (8)
 | 
						|
File\-version:        1
 | 
						|
Creation time:       2009\-08\-19 16:47:41
 | 
						|
Recover time:        2009\-08\-19 16:47:56
 | 
						|
Status:              checked,analyzed,optimized keys
 | 
						|
Auto increment key:              1  Last value:                306688
 | 
						|
Data records:               306688  Deleted blocks:                 0
 | 
						|
Datafile parts:             306688  Deleted data:                   0
 | 
						|
Datafile pointer (bytes):        4  Keyfile pointer (bytes):        3
 | 
						|
Datafile length:           9347072  Keyfile length:           6066176
 | 
						|
Max datafile length:    4294967294  Max keyfile length:   17179868159
 | 
						|
Recordlength:                   54
 | 
						|
table description:
 | 
						|
Key Start Len Index   Type                 Rec/key         Root  Blocksize
 | 
						|
1   2     4   unique  long                       1        99328       1024
 | 
						|
2   6     20  multip\&. varchar prefix           512      3563520       1024
 | 
						|
    27    20          varchar                  512
 | 
						|
3   48    3   multip\&. uint24 NULL           306688      6065152       1024
 | 
						|
Field Start Length Nullpos Nullbit Type
 | 
						|
1     1     1
 | 
						|
2     2     4                      no zeros
 | 
						|
3     6     21                     varchar
 | 
						|
4     27    21                     varchar
 | 
						|
5     48    3      1       1       no zeros
 | 
						|
6     51    3      1       2       no zeros
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
Explanations for the types of information
 | 
						|
\fBmyisamchk\fR
 | 
						|
produces are given here\&.
 | 
						|
\(lqKeyfile\(rq
 | 
						|
refers to the index file\&.
 | 
						|
\(lqRecord\(rq
 | 
						|
and
 | 
						|
\(lqrow\(rq
 | 
						|
are synonymous, as are
 | 
						|
\(lqfield\(rq
 | 
						|
and
 | 
						|
\(lqcolumn\&.\(rq
 | 
						|
.PP
 | 
						|
The initial part of the table description contains these values:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
MyISAM file
 | 
						|
.sp
 | 
						|
Name of the
 | 
						|
MyISAM
 | 
						|
(index) file\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Record format
 | 
						|
.sp
 | 
						|
The format used to store table rows\&. The preceding examples use
 | 
						|
Fixed length\&. Other possible values are
 | 
						|
Compressed
 | 
						|
and
 | 
						|
Packed\&. (Packed
 | 
						|
corresponds to what
 | 
						|
SHOW TABLE STATUS
 | 
						|
reports as
 | 
						|
Dynamic\&.)
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Chararacter set
 | 
						|
.sp
 | 
						|
The table default character set\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
File\-version
 | 
						|
.sp
 | 
						|
Version of
 | 
						|
MyISAM
 | 
						|
format\&. Currently always 1\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Creation time
 | 
						|
.sp
 | 
						|
When the data file was created\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Recover time
 | 
						|
.sp
 | 
						|
When the index/data file was last reconstructed\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Status
 | 
						|
.sp
 | 
						|
Table status flags\&. Possible values are
 | 
						|
crashed,
 | 
						|
open,
 | 
						|
changed,
 | 
						|
analyzed,
 | 
						|
optimized keys, and
 | 
						|
sorted index pages\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Auto increment key,
 | 
						|
Last value
 | 
						|
.sp
 | 
						|
The key number associated the table\*(Aqs
 | 
						|
AUTO_INCREMENT
 | 
						|
column, and the most recently generated value for this column\&. These fields do not appear if there is no such column\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Data records
 | 
						|
.sp
 | 
						|
The number of rows in the table\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Deleted blocks
 | 
						|
.sp
 | 
						|
How many deleted blocks still have reserved space\&. You can optimize your table to minimize this space\&. See
 | 
						|
Section\ \&7.6.4, \(lqMyISAM Table Optimization\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Datafile parts
 | 
						|
.sp
 | 
						|
For dynamic\-row format, this indicates how many data blocks there are\&. For an optimized table without fragmented rows, this is the same as
 | 
						|
Data records\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Deleted data
 | 
						|
.sp
 | 
						|
How many bytes of unreclaimed deleted data there are\&. You can optimize your table to minimize this space\&. See
 | 
						|
Section\ \&7.6.4, \(lqMyISAM Table Optimization\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Datafile pointer
 | 
						|
.sp
 | 
						|
The size of the data file pointer, in bytes\&. It is usually 2, 3, 4, or 5 bytes\&. Most tables manage with 2 bytes, but this cannot be controlled from MySQL yet\&. For fixed tables, this is a row address\&. For dynamic tables, this is a byte address\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Keyfile pointer
 | 
						|
.sp
 | 
						|
The size of the index file pointer, in bytes\&. It is usually 1, 2, or 3 bytes\&. Most tables manage with 2 bytes, but this is calculated automatically by MySQL\&. It is always a block address\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Max datafile length
 | 
						|
.sp
 | 
						|
How long the table data file can become, in bytes\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Max keyfile length
 | 
						|
.sp
 | 
						|
How long the table index file can become, in bytes\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Recordlength
 | 
						|
.sp
 | 
						|
How much space each row takes, in bytes\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
The
 | 
						|
table description
 | 
						|
part of the output includes a list of all keys in the table\&. For each key,
 | 
						|
\fBmyisamchk\fR
 | 
						|
displays some low\-level information:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Key
 | 
						|
.sp
 | 
						|
This key\*(Aqs number\&. This value is shown only for the first column of the key\&. If this value is missing, the line corresponds to the second or later column of a multiple\-column key\&. For the table shown in the example, there are two
 | 
						|
table description
 | 
						|
lines for the second index\&. This indicates that it is a multiple\-part index with two parts\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Start
 | 
						|
.sp
 | 
						|
Where in the row this portion of the index starts\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Len
 | 
						|
.sp
 | 
						|
How long this portion of the index is\&. For packed numbers, this should always be the full length of the column\&. For strings, it may be shorter than the full length of the indexed column, because you can index a prefix of a string column\&. The total length of a multiple\-part key is the sum of the
 | 
						|
Len
 | 
						|
values for all key parts\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Index
 | 
						|
.sp
 | 
						|
Whether a key value can exist multiple times in the index\&. Possible values are
 | 
						|
unique
 | 
						|
or
 | 
						|
multip\&.
 | 
						|
(multiple)\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Type
 | 
						|
.sp
 | 
						|
What data type this portion of the index has\&. This is a
 | 
						|
MyISAM
 | 
						|
data type with the possible values
 | 
						|
packed,
 | 
						|
stripped, or
 | 
						|
empty\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Root
 | 
						|
.sp
 | 
						|
Address of the root index block\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Blocksize
 | 
						|
.sp
 | 
						|
The size of each index block\&. By default this is 1024, but the value may be changed at compile time when MySQL is built from source\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Rec/key
 | 
						|
.sp
 | 
						|
This is a statistical value used by the optimizer\&. It tells how many rows there are per value for this index\&. A unique index always has a value of 1\&. This may be updated after a table is loaded (or greatly changed) with
 | 
						|
\fBmyisamchk \-a\fR\&. If this is not updated at all, a default value of 30 is given\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
The last part of the output provides information about each column:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Field
 | 
						|
.sp
 | 
						|
The column number\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Start
 | 
						|
.sp
 | 
						|
The byte position of the column within table rows\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Length
 | 
						|
.sp
 | 
						|
The length of the column in bytes\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Nullpos,
 | 
						|
Nullbit
 | 
						|
.sp
 | 
						|
For columns that can be
 | 
						|
NULL,
 | 
						|
MyISAM
 | 
						|
stores
 | 
						|
NULL
 | 
						|
values as a flag in a byte\&. Depending on how many nullable columns there are, there can be one or more bytes used for this purpose\&. The
 | 
						|
Nullpos
 | 
						|
and
 | 
						|
Nullbit
 | 
						|
values, if nonempty, indicate which byte and bit contains that flag indicating whether the column is
 | 
						|
NULL\&.
 | 
						|
.sp
 | 
						|
The position and number of bytes used to store
 | 
						|
NULL
 | 
						|
flags is shown in the line for field 1\&. This is why there are six
 | 
						|
Field
 | 
						|
lines for the
 | 
						|
person
 | 
						|
table even though it has only five columns\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Type
 | 
						|
.sp
 | 
						|
The data type\&. The value may contain any of the following descriptors:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
constant
 | 
						|
.sp
 | 
						|
All rows have the same value\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
no endspace
 | 
						|
.sp
 | 
						|
Do not store endspace\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
no endspace, not_always
 | 
						|
.sp
 | 
						|
Do not store endspace and do not do endspace compression for all values\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
no endspace, no empty
 | 
						|
.sp
 | 
						|
Do not store endspace\&. Do not store empty values\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
table\-lookup
 | 
						|
.sp
 | 
						|
The column was converted to an
 | 
						|
ENUM\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
zerofill(\fIN\fR)
 | 
						|
.sp
 | 
						|
The most significant
 | 
						|
\fIN\fR
 | 
						|
bytes in the value are always 0 and are not stored\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
no zeros
 | 
						|
.sp
 | 
						|
Do not store zeros\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
always zero
 | 
						|
.sp
 | 
						|
Zero values are stored using one bit\&.
 | 
						|
.RE
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Huff tree
 | 
						|
.sp
 | 
						|
The number of the Huffman tree associated with the column\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Bits
 | 
						|
.sp
 | 
						|
The number of bits used in the Huffman tree\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
The
 | 
						|
Huff tree
 | 
						|
and
 | 
						|
Bits
 | 
						|
fields are displayed if the table has been compressed with
 | 
						|
\fBmyisampack\fR\&. See
 | 
						|
\fBmyisampack\fR(1), for an example of this information\&.
 | 
						|
.PP
 | 
						|
Example of
 | 
						|
\fBmyisamchk \-eiv\fR
 | 
						|
output:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
Checking MyISAM file: person
 | 
						|
Data records:  306688   Deleted blocks:       0
 | 
						|
\- check file\-size
 | 
						|
\- check record delete\-chain
 | 
						|
No recordlinks
 | 
						|
\- check key delete\-chain
 | 
						|
block_size 1024:
 | 
						|
\- check index reference
 | 
						|
\- check data record references index: 1
 | 
						|
Key:  1:  Keyblocks used:  98%  Packed:    0%  Max levels:  3
 | 
						|
\- check data record references index: 2
 | 
						|
Key:  2:  Keyblocks used:  99%  Packed:   97%  Max levels:  3
 | 
						|
\- check data record references index: 3
 | 
						|
Key:  3:  Keyblocks used:  98%  Packed:  \-14%  Max levels:  3
 | 
						|
Total:    Keyblocks used:  98%  Packed:   89%
 | 
						|
\- check records and index references
 | 
						|
\fI*** LOTS OF ROW NUMBERS DELETED ***\fR
 | 
						|
Records:            306688  M\&.recordlength:       25  Packed:            83%
 | 
						|
Recordspace used:       97% Empty space:           2% Blocks/Record:   1\&.00
 | 
						|
Record blocks:      306688  Delete blocks:         0
 | 
						|
Record data:       7934464  Deleted data:          0
 | 
						|
Lost space:         256512  Linkdata:        1156096
 | 
						|
User time 43\&.08, System time 1\&.68
 | 
						|
Maximum resident set size 0, Integral resident set size 0
 | 
						|
Non\-physical pagefaults 0, Physical pagefaults 0, Swaps 0
 | 
						|
Blocks in 0 out 7, Messages in 0 out 0, Signals 0
 | 
						|
Voluntary context switches 0, Involuntary context switches 0
 | 
						|
Maximum memory usage: 1046926 bytes (1023k)
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
\fBmyisamchk \-eiv\fR
 | 
						|
output includes the following information:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Data records
 | 
						|
.sp
 | 
						|
The number of rows in the table\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Deleted blocks
 | 
						|
.sp
 | 
						|
How many deleted blocks still have reserved space\&. You can optimize your table to minimize this space\&. See
 | 
						|
Section\ \&7.6.4, \(lqMyISAM Table Optimization\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Key
 | 
						|
.sp
 | 
						|
The key number\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Keyblocks used
 | 
						|
.sp
 | 
						|
What percentage of the keyblocks are used\&. When a table has just been reorganized with
 | 
						|
\fBmyisamchk\fR, the values are very high (very near theoretical maximum)\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Packed
 | 
						|
.sp
 | 
						|
MySQL tries to pack key values that have a common suffix\&. This can only be used for indexes on
 | 
						|
CHAR
 | 
						|
and
 | 
						|
VARCHAR
 | 
						|
columns\&. For long indexed strings that have similar leftmost parts, this can significantly reduce the space used\&. In the preceding example, the second key is 40 bytes long and a 97% reduction in space is achieved\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Max levels
 | 
						|
.sp
 | 
						|
How deep the B\-tree for this key is\&. Large tables with long key values get high values\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Records
 | 
						|
.sp
 | 
						|
How many rows are in the table\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
M\&.recordlength
 | 
						|
.sp
 | 
						|
The average row length\&. This is the exact row length for tables with fixed\-length rows, because all rows have the same length\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Packed
 | 
						|
.sp
 | 
						|
MySQL strips spaces from the end of strings\&. The
 | 
						|
Packed
 | 
						|
value indicates the percentage of savings achieved by doing this\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Recordspace used
 | 
						|
.sp
 | 
						|
What percentage of the data file is used\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Empty space
 | 
						|
.sp
 | 
						|
What percentage of the data file is unused\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Blocks/Record
 | 
						|
.sp
 | 
						|
Average number of blocks per row (that is, how many links a fragmented row is composed of)\&. This is always 1\&.0 for fixed\-format tables\&. This value should stay as close to 1\&.0 as possible\&. If it gets too large, you can reorganize the table\&. See
 | 
						|
Section\ \&7.6.4, \(lqMyISAM Table Optimization\(rq\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Recordblocks
 | 
						|
.sp
 | 
						|
How many blocks (links) are used\&. For fixed\-format tables, this is the same as the number of rows\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Deleteblocks
 | 
						|
.sp
 | 
						|
How many blocks (links) are deleted\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Recorddata
 | 
						|
.sp
 | 
						|
How many bytes in the data file are used\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Deleted data
 | 
						|
.sp
 | 
						|
How many bytes in the data file are deleted (unused)\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Lost space
 | 
						|
.sp
 | 
						|
If a row is updated to a shorter length, some space is lost\&. This is the sum of all such losses, in bytes\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Linkdata
 | 
						|
.sp
 | 
						|
When the dynamic table format is used, row fragments are linked with pointers (4 to 7 bytes each)\&.
 | 
						|
Linkdata
 | 
						|
is the sum of the amount of storage used by all such pointers\&.
 | 
						|
.RE
 | 
						|
.SH "MYISAMCHK MEMORY USAGE"
 | 
						|
.\" memory usage: myisamchk
 | 
						|
.PP
 | 
						|
Memory allocation is important when you run
 | 
						|
\fBmyisamchk\fR\&.
 | 
						|
\fBmyisamchk\fR
 | 
						|
uses no more memory than its memory\-related variables are set to\&. If you are going to use
 | 
						|
\fBmyisamchk\fR
 | 
						|
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
 | 
						|
\fBmyisamchk\fR
 | 
						|
to operate faster\&. For example, if you have more than 512MB RAM available, you could use options such as these (in addition to any other options you might specify):
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
shell> \fBmyisamchk \-\-myisam_sort_buffer_size=256M \e\fR
 | 
						|
           \fB\-\-key_buffer_size=512M \e\fR
 | 
						|
           \fB\-\-read_buffer_size=64M \e\fR
 | 
						|
           \fB\-\-write_buffer_size=64M \&.\&.\&.\fR
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
Using
 | 
						|
\fB\-\-myisam_sort_buffer_size=16M\fR
 | 
						|
is probably enough for most cases\&.
 | 
						|
.PP
 | 
						|
Be aware that
 | 
						|
\fBmyisamchk\fR
 | 
						|
uses temporary files in
 | 
						|
TMPDIR\&. If
 | 
						|
TMPDIR
 | 
						|
points to a memory file system, out of memory errors can easily occur\&. If this happens, run
 | 
						|
\fBmyisamchk\fR
 | 
						|
with the
 | 
						|
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
 | 
						|
option to specify a directory located on a file system that has more space\&.
 | 
						|
.PP
 | 
						|
When performing repair operations,
 | 
						|
\fBmyisamchk\fR
 | 
						|
also needs a lot of disk space:
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
Twice the size of the data file (the original file and a copy)\&. This space is not needed if you do a repair with
 | 
						|
\fB\-\-quick\fR; in this case, only the index file is re\-created\&.
 | 
						|
\fIThis space must be available on the same file system as the original data file\fR, as the copy is created in the same directory as the original\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
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 must be available on the same file system as the original data file\&.
 | 
						|
.RE
 | 
						|
.sp
 | 
						|
.RS 4
 | 
						|
.ie n \{\
 | 
						|
\h'-04'\(bu\h'+03'\c
 | 
						|
.\}
 | 
						|
.el \{\
 | 
						|
.sp -1
 | 
						|
.IP \(bu 2.3
 | 
						|
.\}
 | 
						|
When using
 | 
						|
\fB\-\-recover\fR
 | 
						|
or
 | 
						|
\fB\-\-sort\-recover\fR
 | 
						|
(but not when using
 | 
						|
\fB\-\-safe\-recover\fR), you need space on disk for sorting\&. This space is allocated in the temporary directory (specified by
 | 
						|
TMPDIR
 | 
						|
or
 | 
						|
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR)\&. The following formula yields the amount of space required:
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
(\fIlargest_key\fR + \fIrow_pointer_length\fR) * \fInumber_of_rows\fR * 2
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.sp
 | 
						|
You can check the length of the keys and the
 | 
						|
\fIrow_pointer_length\fR
 | 
						|
with
 | 
						|
\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR
 | 
						|
(see
 | 
						|
the section called \(lqOBTAINING TABLE INFORMATION WITH MYISAMCHK\(rq)\&. The
 | 
						|
\fIrow_pointer_length\fR
 | 
						|
and
 | 
						|
\fInumber_of_rows\fR
 | 
						|
values are the
 | 
						|
Datafile pointer
 | 
						|
and
 | 
						|
Data records
 | 
						|
values in the table description\&. To determine the
 | 
						|
\fIlargest_key\fR
 | 
						|
value, check the
 | 
						|
Key
 | 
						|
lines in the table description\&. The
 | 
						|
Len
 | 
						|
column indicates the number of bytes for each key part\&. For a multiple\-column index, the key size is the sum of the
 | 
						|
Len
 | 
						|
values for all key parts\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
If you have a problem with disk space during repair, you can try
 | 
						|
\fB\-\-safe\-recover\fR
 | 
						|
instead of
 | 
						|
\fB\-\-recover\fR\&.
 | 
						|
.SH "COPYRIGHT"
 | 
						|
.br
 | 
						|
.PP
 | 
						|
Copyright \(co 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 | 
						|
.PP
 | 
						|
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
 | 
						|
.PP
 | 
						|
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 | 
						|
.PP
 | 
						|
You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
 | 
						|
.sp
 | 
						|
.SH "SEE ALSO"
 | 
						|
For more information, please refer to the MySQL Reference Manual,
 | 
						|
which may already be installed locally and which is also available
 | 
						|
online at http://dev.mysql.com/doc/.
 | 
						|
.SH AUTHOR
 | 
						|
Oracle Corporation (http://dev.mysql.com/).
 |