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/). |