diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
commit | 06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /man/myisamchk.1 | |
parent | Initial commit. (diff) | |
download | mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man/myisamchk.1')
-rw-r--r-- | man/myisamchk.1 | 2519 |
1 files changed, 2519 insertions, 0 deletions
diff --git a/man/myisamchk.1 b/man/myisamchk.1 new file mode 100644 index 00000000..dae679bd --- /dev/null +++ b/man/myisamchk.1 @@ -0,0 +1,2519 @@ +'\" t +.\" +.TH "\fBMYISAMCHK\fR" "1" "15 May 2020" "MariaDB 10.11" "MariaDB Database System" +.\" ----------------------------------------------------------------- +.\" * 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 +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 allows 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 MariaDB 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 \-\-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\&. +.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 MariaDB 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't 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't 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\&. +.sp .5v +.RE +.PP +\fBmyisamchk\fR +supports the following options, which can be specified on the command line or in the +[myisamchk] +option file group\&. +.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 'd:t:o,\fIfile_name\fR'. The default is 'd:t:o,/tmp/myisamchk.trace'. +.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 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +.\" myisamchk: print argument list option +.\" print argument list option: myisamchk +\fB\-\-print\-defaults\fR +.sp +Print the program argument list and exit\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +.\" myisamchk: no defaults option +.\" no defaults option: myisamchk +\fB\-\-no\-defaults\fR +.sp +Don't read default options from any option file\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +.\" myisamchk: defaults file option +.\" defaults file option: myisamchk +\fB\-\-defaults\-file=#\fR +.sp +Only read default options from the given file\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +.\" myisamchk: defaults extrafile option +.\" defaults extra file option: myisamchk +\fB\-\-defaults\-extra\-file=#\fR +.sp +Read this file after the global files are read\&. +.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 +.\" key_cache_block_size myisamchk variable +.\" myisam_block_size myisamchk variable +.\" read_buffer_size myisamchk variable +.\" sort_buffer_size myisamchk variable +.\" sort_key_blocks myisamchk variable +.\" stats_method myisamchk variable +.\" write_buffer_size myisamchk variable +.TS +allbox tab(:); +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{ +\fBVariable\fR +T}:T{ +\fBDefault Value\fR +T} +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{ +key_cache_block_size +T}:T{ +1024 +T} +T{ +myisam_block_size +T}:T{ +1024 +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\&. +.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 +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\ \&7.4.7, \(lqMyISAM 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 +For a description of the output format, see +the section called \(lqMYISAMCHK TABLE INFORMATION\(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't 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\&. States will be updated as with +\fB\-\-update\-state\fR\&. +.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't 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\&. +.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: create-missing-keys option +.\" create-missing-keys option: myisamchk +\fB\-\-create\-missing\-keys\fR +.sp +Create missing keys. This assumes that the data file is correct and that the +number of rows stored in the index file is correct\&. Enables +\fB\-\-quick\fR\&. + +.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 +For a description of the output format, see +the section called \(lqMYISAMCHK TABLE INFORMATION\(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\&. Add another +\fB\-\-force\fR +to avoid 'myisam_sort_buffer_size is too small' errors\&. In this case +we will attempt to do the repair with the given +\fBmyisam_sort_buffer_size\fR +and dynamically allocate as many management buffers as needed\&. +.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: 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\&. NOTE: Tables where the data file is corrupted can't be fixed with this option\&. +.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 +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 +.\} +.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\&. +tmpdir +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 \(lqMYISAMCHK TABLE INFORMATION\(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's index numbers, use +SHOW INDEX, which displays a table's 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 +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +.\" myisamchk: stats_method option +.\" stats_method option: myisamchk +\fB\-\-stats\-method=name\fR +.sp +Specifies how index statistics collection code should treat NULLs\&. Possible values +of name are "nulls_unequal" (default), "nulls_equal" (emulate MySQL 4 behavior), and "nulls_ignored"\&. +.RE +.SH "MYISAMCHK TABLE INFORMATION" +.\" 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 MariaDB 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's +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\ \&6.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\ \&6.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 MariaDB 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 MariaDB\&. 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's 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 MariaDB 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\ \&6.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 +MariaDB 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 +MariaDB 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\ \&6.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 32MB RAM, you could use options such as these (in addition to any other options you might specify): +.sp +.if n \{\ +.RS 4 +.\} +.nf +shell> \fBmyisamchk \-\-sort_buffer_size=16M \e\fR + \fB\-\-key_buffer_size=16M \e\fR + \fB\-\-read_buffer_size=1M \e\fR + \fB\-\-write_buffer_size=1M \&.\&.\&.\fR +.fi +.if n \{\ +.RE +.\} +.PP +Using +\fB\-\-sort_buffer_size=16M\fR +should probably be 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) \(mu \fInumber_of_rows\fR \(mu 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 \(lqMYISAMCHK TABLE INFORMATION\(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 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., 2010-2020 MariaDB Foundation +.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-1335 USA or see http://www.gnu.org/licenses/. +.sp +.SH "SEE ALSO" +For more information, please refer to the MariaDB Knowledge Base, available online at https://mariadb.com/kb/ +.SH AUTHOR +MariaDB Foundation (http://www.mariadb.org/). |