Commit 66e25d56 authored by unknown's avatar unknown

Update information about MyISAM files

parent 8f5f7742
......@@ -501,6 +501,7 @@ MyISAM Tables
* Key space:: Space needed for keys
* MyISAM table formats:: MyISAM table formats
* MyISAM table problems::
MyISAM Table Formats
......@@ -22889,7 +22890,8 @@ based on the @code{ISAM} code and has a lot of useful extensions.
The index is stored in a file with the @code{.MYI} (MYIndex) extension,
and the data is stored in a file with the @code{.MYD} (MYData) extension.
You can check/repair @code{MyISAM} tables with the @code{myisamchk}
utility. @xref{Crash recovery}.
utility. @xref{Crash recovery}. You can compress @code{MyISAM} tables with
@code{myisampack} to take up much less space. @xref{myisampack}.
The following is new in @code{MyISAM}:
......@@ -23042,6 +23044,7 @@ backup media.
@menu
* Key space:: Space needed for keys
* MyISAM table formats:: MyISAM table formats
* MyISAM table problems::
@end menu
@cindex key space, MyISAM
......@@ -23067,7 +23070,7 @@ In @code{MyISAM} tables, you can also prefix compress numbers by specifying
many integer keys that have an identical prefix when the numbers are stored
high-byte first.
@node MyISAM table formats, , Key space, MyISAM
@node MyISAM table formats, MyISAM table problems, Key space, MyISAM
@subsection MyISAM Table Formats
@strong{MyISAM} supports 3 different table types. Two of them are chosen
......@@ -23229,6 +23232,63 @@ columns.
Can be uncompressed with @code{myisamchk}.
@end itemize
@node MyISAM table problems, , MyISAM table formats, MyISAM
@subsection MyISAM table problems.
Each @code{MyISAM} @code{.MYI} file has in the header a counter that can
be used to check if a table has been closed properly.
If you get the following warning from @code{CHECK TABLE} or @code{myisamchk}:
@example
# clients is using or hasn't closed the table properly
@end example
this means that this counter has come out of sync. This doesn't mean
that the table is corrupted, but means that you should at least do a
check on the table to verify that it's ok.
The counter works as follows:
@itemize @bullet
@item
The first time a table is updated in @strong{MySQL}, a counter in the
header of the index files is incremented.
@item
The counter is not changed during further updates.
@item
When the last instance of a table is closed (because of a @code{FLUSH} or
because there isn't room in the table cache) the counter is
decremented if the table has been updated at any point.
@item
When you repair the table or check the table and it was ok,
the counter is reset to 0.
@item
To avoid problems with interaction with other processes that may do a
check on the table, the counter is not decremented on close if it was 0.
@end itemize
In other words, the only ways this can go out of sync are:
@itemize @bullet
@item
The @code{MyISAM} tables are copied without a @code{LOCK} and
@code{FLUSH TABLES}.
@item
@strong{MySQL} has crashed between an update and the final close
(Note that the table may still be ok, as @strong{MySQL} always issues writes
for everything between each statement).
@item
Someone has done a @code{myisamchk --repair} or @code{myisamchk --update-state}on a table that was in use by @code{mysqld}.
@item
Many @code{mysqld} servers are using the table and one has done a
@code{REPAIR} or @code{CHECK} of the table while it was in use by
another server. In this setup the @code{CHECK} is safe to do (even if
you will get the warning from other servers), but @code{REPAIR} should
be avoided as it currently replaces the data file with a new one, which
is not signaled to the other servers.
@end itemize
@cindex tables, merging
@cindex MERGE tables, defined
@node MERGE, ISAM, MyISAM, Table types
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment