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.
      
Runs myisamchk in “describe mode” to produce a description of your table. If you start the MySQL server with external locking disabled, myisamchk may report an error for a table that is updated while it runs. However, because myisamchk does not change the table in describe mode, there is no risk of destroying data.
            Adding -v runs myisamchk
            in verbose mode so that it produces more information about
            the table. Adding -v a second time produces
            even more information.
          
Shows only the most important information from a table. This operation is slow because it must read the entire table.
            This is like -eis, but tells you what is
            being done.
          
        The tbl_name argument can be either
        the name of a MyISAM table or the name of its
        index file, as described in Section 4.6.3, “myisamchk — MyISAM Table-Maintenance Utility”.
        Multiple tbl_name arguments can be
        given.
      
        Suppose that a table named person has the
        following structure. (The MAX_ROWS table
        option is included so that in the example output from
        myisamchk shown later, some values are
        smaller and fit the output format more easily.)
      
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;
Suppose also that the table has these data and index file sizes:
-rw-rw---- 1 mysql mysql 9347072 Aug 19 11:47 person.MYD -rw-rw---- 1 mysql mysql 6066176 Aug 19 11:47 person.MYI
Example of myisamchk -dvv output:
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
Explanations for the types of information myisamchk produces are given here. “Keyfile” refers to the index file. “Record” and “row” are synonymous, as are “field” and “column.”
The initial part of the table description contains these values:
            MyISAM file
          
            Name of the MyISAM (index) file.
          
            Record format
          
            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.)
          
            Chararacter set
          
The table default character set.
            File-version
          
            Version of MyISAM format. Currently
            always 1.
          
            Creation time
          
When the data file was created.
            Recover time
          
When the index/data file was last reconstructed.
            Status
          
            Table status flags. Possible values are
            crashed, open,
            changed, analyzed,
            optimized keys, and sorted index
            pages.
          
            Auto increment key, Last
            value
          
            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.
          
            Data records
          
The number of rows in the table.
            Deleted blocks
          
            How many deleted blocks still have reserved space. You can
            optimize your table to minimize this space. See
            Section 6.6.4, “MyISAM Table Optimization”.
          
            Datafile parts
          
            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.
          
            Deleted data
          
            How many bytes of unreclaimed deleted data there are. You
            can optimize your table to minimize this space. See
            Section 6.6.4, “MyISAM Table Optimization”.
          
            Datafile pointer
          
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.
            Keyfile pointer
          
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.
            Max datafile length
          
How long the table data file can become, in bytes.
            Max keyfile length
          
How long the table index file can become, in bytes.
            Recordlength
          
How much space each row takes, in bytes.
        The table description part of the output
        includes a list of all keys in the table. For each key,
        myisamchk displays some low-level
        information:
      
            Key
          
            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.
          
            Start
          
Where in the row this portion of the index starts.
            Len
          
            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.
          
            Index
          
            Whether a key value can exist multiple times in the index.
            Possible values are unique or
            multip. (multiple).
          
            Type
          
            What data type this portion of the index has. This is a
            MyISAM data type with the possible values
            packed, stripped, or
            empty.
          
            Root
          
Address of the root index block.
            Blocksize
          
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.
            Rec/key
          
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 myisamchk -a. If this is not updated at all, a default value of 30 is given.
The last part of the output provides information about each column:
            Field
          
The column number.
            Start
          
The byte position of the column within table rows.
            Length
          
The length of the column in bytes.
            Nullpos, Nullbit
          
            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.
          
            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.
          
            Type
          
The data type. The value may contain any of the following descriptors:
                constant
              
All rows have the same value.
                no endspace
              
Do not store endspace.
                no endspace, not_always
              
Do not store endspace and do not do endspace compression for all values.
                no endspace, no empty
              
Do not store endspace. Do not store empty values.
                table-lookup
              
                The column was converted to an
                ENUM.
              
                zerofill(
              N)
                The most significant N bytes
                in the value are always 0 and are not stored.
              
                no zeros
              
Do not store zeros.
                always zero
              
Zero values are stored using one bit.
            Huff tree
          
The number of the Huffman tree associated with the column.
            Bits
          
The number of bits used in the Huffman tree.
        The Huff tree and Bits
        fields are displayed if the table has been compressed with
        myisampack. See Section 4.6.5, “myisampack — Generate Compressed, Read-Only MyISAM Tables”,
        for an example of this information.
      
Example of myisamchk -eiv output:
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
*** LOTS OF ROW NUMBERS DELETED ***
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)
myisamchk -eiv output includes the following information:
            Data records
          
The number of rows in the table.
            Deleted blocks
          
            How many deleted blocks still have reserved space. You can
            optimize your table to minimize this space. See
            Section 6.6.4, “MyISAM Table Optimization”.
          
            Key
          
The key number.
            Keyblocks used
          
What percentage of the keyblocks are used. When a table has just been reorganized with myisamchk, the values are very high (very near theoretical maximum).
            Packed
          
            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.
          
            Max levels
          
How deep the B-tree for this key is. Large tables with long key values get high values.
            Records
          
How many rows are in the table.
            M.recordlength
          
The average row length. This is the exact row length for tables with fixed-length rows, because all rows have the same length.
            Packed
          
            MySQL strips spaces from the end of strings. The
            Packed value indicates the percentage of
            savings achieved by doing this.
          
            Recordspace used
          
What percentage of the data file is used.
            Empty space
          
What percentage of the data file is unused.
            Blocks/Record
          
            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, “MyISAM Table Optimization”.
          
            Recordblocks
          
How many blocks (links) are used. For fixed-format tables, this is the same as the number of rows.
            Deleteblocks
          
How many blocks (links) are deleted.
            Recorddata
          
How many bytes in the data file are used.
            Deleted data
          
How many bytes in the data file are deleted (unused).
            Lost space
          
If a row is updated to a shorter length, some space is lost. This is the sum of all such losses, in bytes.
            Linkdata
          
            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.
          


User Comments
Add your own comment.