Go to the first, previous, next, last section, table of contents.


12 MySQL ユーティリティ

12.1 様々な MySQL プログラムの概要

サーバと通信する mysqlclient ライブラリを使用している全ての MySQL クライアントは次の環境変数を使用します:

Name Description
MYSQL_UNIX_PORT デフォルトのソケット; localhost への接続に使用される
MYSQL_TCP_PORT デフォルトの TCP/IP ポート
MYSQL_PWD デフォルトのパスワード
MYSQL_DEBUG デバッグオプション
TMPDIR 一時 tables/files が作成されるディレクトリ

MYSQL_PWD の使用は安全ではありません。 「6.3 MySQL サーバーに接続」節参照.

`mysql' クライアントは、MYSQL_HISTFILE 環境変数に 指定されているファイルにコマンドラインの履歴を書き出します。 デフォルトの履歴ファイルは、 `$HOME/.mysql_history' で、$HOMEHOME 環境変数の値です。

全ての MySQL プログラムは多くの様々なオプションを持ちます。種々 のオプションの完全な説明を得るにはスイッチ --help を使用してください。例 えばmysql --help を試してください。

オプションファイルで、全ての標準クライアントのデフォルトのオプションを 変更することが可能です。 「4.15.4 オプションファイル ( my.cnf )」節.

MySQL プログラムを以下に示します:

myisamchk
MySQL テーブルをチェック, 最適化そして修復します。 myisamchk には多くの機能があるので、一章割り当てて説明しています。 「13 Maintaining a MySQL installation」節参照.
make_binary_release
コンパイルされた MySQL のバイナリリリースを作成します。これは他 の MySQL ユーザの利便のために、ftp で ftp.tcx.se`/pub/mysql/Incoming' に送ることができます。
msql2mysql
mSQL プログラムを MySQL に変換するシェルスクリプト。全て のケースで処理できるわけではありませんが、変換時に良いスタートを与えます。
mysql
mysql は簡単な SQL シェル (GNU readline つき) です。これは対話的な使用や 非対話型問い合わせをサポートします。対話的に使用されると、ASCII テーブル 形式で結果が与えられます。フィルタとして使用されると、出力はタブで区切ら れます(これは起動時のオプションで他のものに変更できます)。 あなたは以下のように簡単にスクリプトを実行できます:
shell> mysql database < script.sql > output.tab
クライアントのメモリが十分でないことによる問題がある場合は、 --quick スイッチを使用してください! これは結果を取り出すのに mysql_store_result() の代わりに mysql_use_result() を使用 するように mysql に強制させます。
mysqlaccess
ホスト, ユーザそしてデータベースの組合せで特権をチェックするためのスクリ プト。
mysqladmin
管理ユーティリティ。データベースの作成/破棄。reload (新しいユーザの読み 込み) と refresh (ディスクへのテーブルのフラッシュ, ログファイルの再オー プン)。サーバのバージョンと処理と状態情報も与えます。 「12.2 MySQL サーバーの管理 ( mysqladmin )」節参照.
mysqlbug
MySQL バグレポートスクリプト。 このスクリプトは MySQL メーリングリストにバグレポートを出す際、 常に使用します。
mysqld
SQL デーモン。これは常に実行されてます。
mysqldump
MySQL データベースの SQL ステートメントまたはタブで区切られたテ キストのファイルにダンプします。Igor Romanenko によって独創的にエンハン スされたフリーウェア。 「12.3 MySQL データベースとテーブルから、構造とデータをダンプ ( mysqldump )」節参照.
mysqlimport
一つまたは複数のテキストファイルをそれぞれのテーブルに読み込みます。LOAD DATA INFILE でサポートされる全ての形式を使用できます。 「12.4 テキストファイルからデータを取り込む ( mysqlimport )」節参照.
mysqlshow
データベース, テーブル, 項目そしてインデックスについての情報を表示します。
mysql_install_db
MySQL 承認テーブルをデフォルト特権で作成します。これは通常、最 初の MySQL リリースを新しいシステム上にインストールする時に一回 だけ実行されます。
replace
msql2mysql で使用されるバイナリ。ファイル内または標準入力上の文字列を変 換するユーティリティプログラム。より長い文字列に最初に適合するため有限状 態マシンを使用します。文字列を交換するために使用できます。例えば、 ab を与えられたファイル内で交換します:
shell> replace a b b a -- file1 file2 ...
safe_mysqld
mysqld デーモンをいくつかの安全な機能で開始します。エラー時には再起動し、 実行時情報をログファイルへ記入します。

12.2 MySQL サーバーの管理 ( mysqladmin )

管理オペレーションを実行するためのユーティリティ。シンタックスは:

shell> mysqladmin [OPTIONS] command [command-option] command ...

mysqladmin --help によって、オプションの一覧を手にいれることができます。

現在の mysqladmin は以下のコマンドをサポートします:

create databasename データベースの作成
drop databasename データベースとテーブルの全削除。
extended-status サーバーから拡張ステータスを取得。
flush-hosts キャッシュされている全ホストをフラッシュ。
flush-logs 全てのログをフラッシュ
flush-tables 全てのテーブルをフラッシュ
flush-privileges 許可テーブルの再読み込み (reload と同じ)
kill id,id,... mysql スレッドの kill.
password new-password 古いパスワードを new-password に変更
ping mysqld が生きているかチェック
processlist 現在活動中の mysql スレッドを表示
reload 許可テーブルの再読み込み
refresh 全テーブルをフラッシュし、ログファイルを一度閉じて開きます。
shutdown サーバーをダウンさせます。
status サーバーから短いステータスを得ます。
variables 変数の表示
version サーバーからバージョンを得ます。

全てのコマンドは、ユニークなプレフィックスで省略可能です。 例えば:

shell> mysqladmin proc stat
+----+-------+-----------+----+-------------+------+-------+------+
| Id | User  | Host      | db | Command     | Time | State | Info |
+----+-------+-----------+----+-------------+------+-------+------+
| 6  | monty | localhost |    | Processlist | 0    |       |      |
+----+-------+-----------+----+-------------+------+-------+------+
Uptime: 10077  Threads: 1  Questions: 9  Slow queries: 0  Opens: 6  Flush tables: 1  Open tables: 2  Memory in use: 1092K  Max memory used: 1116K

mysqladmin status コマンドの結果は、以下の項目を持ちます:

Uptime MySQL サーバーの起動秒数
Threads 稼働中のスレッド数 (clients)
Questions mysqld が開始してからのクライアントからのクエリ数
Slow queries long_query_time 秒より時間のかかったクエリの数
Opens mysqld が開いたテーブル数
Flush tables flush ..., refresh and reload コマンドの実行回数
Open tables 現在開かれているテーブルの数
Memory in use mysqld のコードによって直接割り当てられたメモリ (only available when MySQL is compiled with --with-debug)
Max memory used mysqld のコードによって直接割り当てられる最大メモリー量 (only available when MySQL is compiled with --with-debug)

12.3 MySQL データベースとテーブルから、構造とデータをダンプ ( mysqldump )

データベース、あるいは、 バックアップ、他のSQLサーバーへのデータを移動を目的としたデータのまとまり、 これらをダンプするためのユーティリティ。 ダンプは、テーブルの作成のための SQL 文を含みます。

shell> mysqldump [OPTIONS] database [tables]

もしテーブルを与えなければ、データベースの全てのテーブルがダンプされます。

mysqldump --help によって、オプションの一覧を手にいれることができます。

もし mysqldump--quick--opt なしで実行するならば、 mysqldump は結果を表示する前に、結果をメモリに全てロードすることに 注意してください。 これは大きなデータベースをダンプする際に問題になるでしょう。

mysqldump は以下のオプションをサポートします:

--add-locks
テーブルのダンプの前に LOCK TABLES 文を追加し、 テーブルのダンプ後に UNLOCK TABLE 文を追加します。 ( あとで MySQL に挿入するときにこれは速くなります ).
--add-drop-table
テーブルの create 文の前に、drop table 文を追加します。
--allow-keywords
キーワード(予約語) と同じ名前をもつフィールドの作成を許します。 これは、それぞれのフィールドの前に、テーブル名を付け足します。
-c, --complete-insert
完全な INSERT 文(フィールド名を書いた文) を使用します。
-C, --compress
もしサーバーとクライアントの双方が圧縮をサポートしているならば、 両者の間で行われる通信を全て圧縮します。
--delayed
INSERT DELAYED コマンドを使用してレコードを INSERT します。
-e, --extended-insert
新しいマルチライン INSERT 構文を使用します。(これはあとで挿入する際、 よりコンパクトかつ速くなります。)
-#, --debug[=option_string]
Trace usage of the program (for debugging).
--help
Display a help message and exit.
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
これらのオプションは -T とともに使用され、 LOAD DATA INFILE と同様の意味をなします。 「7.16 LOAD DATA INFILE構文」節参照.
-F, --flush-logs
ダンプする前に、 MySQL サーバーのログファイルをフラッシュします。
-f, --force,
ダンプの途中で SQL エラーが発生しても、ダンプを続けます。
-h, --host=..
指定されたホストの MySQL サーバーからダンプします。 デフォルトのホストは localhost.
-l, --lock-tables.
ダンプを開始するとき全てのテーブルをロックします。
-t, --no-create-info
テーブルの作成情報( CREATE TABLE 文) を書き出しません。
-d, --no-data
テーブル内のレコードを書き出しません。 これはテーブルの構造だけを取り出したいときにとても便利です!
--opt
--quick --add-drop-table --add-locks --extended-insert --lock-tables と同じ. MySQL サーバーから読み出す時間を最短にしてくれます。
-pyour_pass, --password[=your_pass]
サーバーに接続する際のパスワードを与えます。 もし `=your_pass' 部分を与えなかった場合は、 mysqldump は端末からパスワードを読み取ろうとします。
-P port_num, --port=port_num
サーバーに接続する際に使用する TCP/IP ポート番号。 (This は localhost 以外のホストへの接続に使用されます。 localhost の場合は、Unix ソケットが使用されます。)
-q, --quick
クエリをバッファにため込みません。stdout に直接出します。 mysql_use_result() をこれに使用しています。
-S /path/to/socket, --socket=/path/to/socket
localhost に接続する際のソケットファイルの指定 (デフォルトは /tmp/mysql.sock )
-T, --tab=path-to-some-directory
与えられたテーブル毎に、 SQL CREATE 文を含む table_name.sql ファイル、 データを含む table_name.txt ファイルを作成します。 NOTE: これは mysqld デーモンが走っているマシン上で mysqldump を 実行する場合にだけ、動作します。 .txt ファイルのフォーマットは、 --fields-xxx--lines--xxx オプションに従います。
-u user_name, --user=user_name
サーバーに接続する際の MySQL ユーザー名。 デフォルトでは、Unix のログイン名になります。
-O var=option, --set-variable var=option
変数の値をセット。 可能な変数は後で示しします。
-v, --verbose
冗長モード。 プログラムが何を行っているかより表示します。
-V, --version
バージョンを示して終了。
-w, --where='where-condition'
選択されたレコードのみをダンプ: クオートは必須です!
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"

mysqldump の普通の使用はデータベースのバックアップでしょう:

mysqldump --opt database > backup-file.sql

他の MySQL サーバーへデータベースをコピーする場合にも便利です:

mysqldump --opt database | mysql --host=remote-host -C database

12.4 テキストファイルからデータを取り込む ( mysqlimport )

mysqlimport は、LOAD DATA INFILE SQL 構文を、 コマンドラインインターフェースで提供します。 mysqlimport のオプションのほとんどが、 LOAD DATA INFILE への同じオプションに対応します。 「7.16 LOAD DATA INFILE構文」節参照.

mysqlimport の実行は以下のようにします:

shell> mysqlimport [options] filename ...

mysqlimport は、コマンドラインの引数に与えられたファイル名の拡張子を取り、 拡張子を取った後の名前を、ファイルの内容を取り込むテーブルの名前とします。 例えば、`patient.txt', `patient.text', `patient' という ファイルは全て、patient とという名前のテーブルに取り込まれます。

mysqlimport は以下のオプションをサポートします:

-C, --compress
クライアントとサーバーの両方が圧縮をサポートしているなら、 クライアント・サーバー間でやり取りされる全ての情報を圧縮します。
-#, --debug[=option_string]
プログラムのトレース(デバッグ)
-d, --delete
テキストファイルを取り込む前にテーブルを空にします。
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
これらのオプションは、LOAD DATA INFILE の対応する文節と同じ意味になります。 「7.16 LOAD DATA INFILE構文」節参照.
-f, --force
エラーを無視します。例えば、テキストファイルを取り込むテーブルがない場合、 残りのファイルの処理に移ります。 --force がなければ、 テーブルがなければ mysqlimport は終了します。
--help
ヘルプを表示して終了。
-h host_name, --host=host_name
名前を指定された MySQL サーバーにデータを取り入れます。 デフォルトでは localhost.
-i, --ignore
--replace オプションの説明を見てください。
-l, --lock-tables
それぞれのテキストファイルを処理する前に、書き込まれる 全てのテーブルをロックします。 これは確実に、すべてのテーブルをサーバ上で同期させます。
-L, --local
クライアントからの入力ファイルを読みます。 デフォルトでは、localhost に接続した場合、テキストファイルは サーバー上にあると仮定されます。(localhost はデフォルト値)
-pyour_pass, --password[=your_pass]
サーバーに接続するときに使用するパスワード。 もし `=your_pass' のところにパスワードを書かなければ、 mysqlimport は端末からのパスワードの入力を要求します。
-P port_num, --port=port_num
ホストに接続するための TCP/IP ポート番号。 (これは localhost を除くホストへの接続に使用します。 localhost へは、UNIX ソケットを使用します。)
-r, --replace
--replace--ignore オプションは、 入力されているレコードのユニークキーの値が、 既に存在しているレコードのユニークキーの値と同じ場合、 その入力されているデータの取り扱いを決定します。 もし --replace が指定されているなら、 既にあるレコードは新しく読まれたレコードに置き換えられます。 もし --ignore が指定されているなら、 入力された物は無視されます。 どちらのオプションも指定していない場合、 キーの値が重なっているとエラーを発し、 テキストファイルの残りの部分は無視されます。
-s, --silent
静粛モード。エラーだけ出力します。
-S /path/to/socket, --socket=/path/to/socket
localhost への接続時に使用するソケットファイルを指定します。
-u user_name, --user=user_name
サーバーの接続に使用する MySQL ユーザー名の指定。 デフォルトは、Unix のログイン名。
-v, --verbose
冗長モード。プログラムがしている事について多く出力します。
-V, --version
バージョンを表示して終了。

Here follows a sample run of using mysqlimport:

$ mysql --version
mysql  Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686)
$ uname -a
Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
$ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$ ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
$ od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
$ mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
$ mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

12.5 MySQL の圧縮された読み込み専用テーブルジェネレータ ( myisampackpack_isam )

myisampack is used to compress MyISAM tables and pack_isam is used to compress ISAM tables. Since ISAM tables are deprecated we will only discuss myisampack here.

myisampack は、 10 ライセンス以上または拡張サポートを注文した時に得 られる特別なユーテリティです。これらはバイナリだけの配布のため、 いくつかのプラットフォーム上でだけに有効です。

In the following we only talk about myisampack, but everything holds also for pack_isam.

myisampack はテーブル内の各項目を別々に圧縮するように働きます。展開のため の情報は、テーブルがオープンされた時にメモリに読まれます。これは、正確に1レコー ドだけを展開する必要があるような、個々のレコードへのアクセス時にとても良 い性能を与えます。MSDOS 上の Stacker 使用時のように、ディスクブロックは そんなに大きくありません。 通常、myisampack はデータファイルを 40〜70% にパックします。

MySQL は圧縮されたテーブルでメモリマップ (mmap()) を使用します。 mmap() が働かない場合は、通常のファイルの読み書きを使用します。

現在 myisampack には2つの制限があります:

これらの制限の修正は TODO にありますが、優先度は低いです。

myisampack は以下のようにして起動します:

shell> myisampack [options] filename ...

それぞれのファイル名はインデックスファイル(`.MYI')の名前です。 もしデータディレクトリにカレントディレクトリを移動していないなら、 ファイルのパスを指定しなくてはなりません。`.MYI' 拡張子は 省略することが可能です。

myisampack は以下のオプションをサポートします:

-b, --backup
tbl_name.OLD としてバックアップを作成します.
-#, --debug=debug_options
デバック出力。debug_options'd:t:o,filename'.
-f, --force
一時ファイルが存在していようが、サイズが大きくなろうが、強制的にテーブルを パックします。 myisampack はテーブルを圧縮している間、 一時ファイルを `tbl_name.TMD' という名前で作成します。 もし myisampack を途中で kill した場合、 `.TMD' ファイルが消されて いない事があります。通常、myisampack`tbl_name.TMD' ファイルが 既に存在する場合はエラーで終了します。 --force を使用すると、 myisampack はそのような場合でもテーブルをパックします。
-?, --help
ヘルプメッセージを出力して終了。
-j big_tbl_name, --join=big_tbl_name
全てのテーブルをコマンドラインで指定した big_tbl_name 一つに まとめます。結合される全てのテーブル定義は同じでなければなりません (同じ項目名、同じ項目型、同じインデックス、等)
-p #, --packlength=#
Specify the record length storage size, in bytes. The value should be 1, 2 or 3. (myisampack stores all rows with length pointers of 1, 2 or 3 bytes. In most normal cases, myisampack can determine the right length value before it begins packing the file, but it may notice during the packing process that it could have used a shorter length. In this case, myisampack will print a note that the next time you pack the same file, you could use a shorter record length.)
-s, --silent
Silent mode. Write output only when errors occur.
-t, --test
Don't pack table, only test packing it.
-T dir_name, --tmp_dir=dir_name
Use the named directory as the location in which to write the temporary table.
-v, --verbose
Verbose mode. Write info about progress and packing result.
-V, --version
Display version information and exit.
-w, --wait
Wait and retry if table is in use. If the mysqld server was invoked with the --skip-locking option, it is not a good idea to invoke myisampack if the table might be updated during the packing process.

The sequence of commands shown below illustrates a typical table compression session:

shell> ls -l station.*
-rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.ISD
-rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.ISM
-rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:              1192  Deleted blocks:              0
Datafile: Parts:           1192  Deleted data:                0
Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:               834
Record format: Fixed length

table description:
Key Start Len Index   Type                       Root  Blocksize    Rec/key
1   2     4   unique  unsigned long              1024       1024          1
2   32    30  multip. text                      10240       1024          1

Field Start Length Type
1     1     1
2     2     4
3     6     4
4     10    1
5     11    20
6     31    1
7     32    30
8     62    35
9     97    35
10    132   35
11    167   4
12    171   16
13    187   35
14    222   4
15    226   16
16    242   20
17    262   20
18    282   20
19    302   30
20    332   4
21    336   4
22    340   1
23    341   8
24    349   8
25    357   8
26    365   2
27    367   2
28    369   4
29    373   4
30    377   1
31    378   2
32    380   8
33    388   4
34    392   4
35    396   4
36    400   4
37    404   1
38    405   4
39    409   4
40    413   4
41    417   4
42    421   4
43    425   4
44    429   20
45    449   30
46    479   1
47    480   1
48    481   79
49    560   79
50    639   79
51    718   79
52    797   8
53    805   1
54    806   1
55    807   20
56    827   4
57    831   4

shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics

normal:     20  empty-space:      16  empty-zero:        12  empty-fill:  11
pre-space:   0  end-space:        12  table-lookups:      5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.14%

shell> ls -l station.*
-rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.ISD
-rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.ISM
-rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:              1192  Deleted blocks:              0
Datafile: Parts:           1192  Deleted data:                0
Datafilepointer (bytes):      3  Keyfile pointer (bytes):     1
Max datafile length:   16777215  Max keyfile length:     131071
Recordlength:               834
Record format: Compressed

table description:
Key Start Len Index   Type                       Root  Blocksize    Rec/key
1   2     4   unique  unsigned long             10240       1024          1
2   32    30  multip. text                      54272       1024          1

Field Start Length Type                         Huff tree  Bits
1     1     1      constant                             1     0
2     2     4      zerofill(1)                          2     9
3     6     4      no zeros, zerofill(1)                2     9
4     10    1                                           3     9
5     11    20     table-lookup                         4     0
6     31    1                                           3     9
7     32    30     no endspace, not_always              5     9
8     62    35     no endspace, not_always, no empty    6     9
9     97    35     no empty                             7     9
10    132   35     no endspace, not_always, no empty    6     9
11    167   4      zerofill(1)                          2     9
12    171   16     no endspace, not_always, no empty    5     9
13    187   35     no endspace, not_always, no empty    6     9
14    222   4      zerofill(1)                          2     9
15    226   16     no endspace, not_always, no empty    5     9
16    242   20     no endspace, not_always              8     9
17    262   20     no endspace, no empty                8     9
18    282   20     no endspace, no empty                5     9
19    302   30     no endspace, no empty                6     9
20    332   4      always zero                          2     9
21    336   4      always zero                          2     9
22    340   1                                           3     9
23    341   8      table-lookup                         9     0
24    349   8      table-lookup                        10     0
25    357   8      always zero                          2     9
26    365   2                                           2     9
27    367   2      no zeros, zerofill(1)                2     9
28    369   4      no zeros, zerofill(1)                2     9
29    373   4      table-lookup                        11     0
30    377   1                                           3     9
31    378   2      no zeros, zerofill(1)                2     9
32    380   8      no zeros                             2     9
33    388   4      always zero                          2     9
34    392   4      table-lookup                        12     0
35    396   4      no zeros, zerofill(1)               13     9
36    400   4      no zeros, zerofill(1)                2     9
37    404   1                                           2     9
38    405   4      no zeros                             2     9
39    409   4      always zero                          2     9
40    413   4      no zeros                             2     9
41    417   4      always zero                          2     9
42    421   4      no zeros                             2     9
43    425   4      always zero                          2     9
44    429   20     no empty                             3     9
45    449   30     no empty                             3     9
46    479   1                                          14     4
47    480   1                                          14     4
48    481   79     no endspace, no empty               15     9
49    560   79     no empty                             2     9
50    639   79     no empty                             2     9
51    718   79     no endspace                         16     9
52    797   8      no empty                             2     9
53    805   1                                          17     1
54    806   1                                           3     9
55    807   20     no empty                             3     9
56    827   4      no zeros, zerofill(2)                2     9
57    831   4      no zeros, zerofill(1)                2     9

The information printed by myisampack is described below:

normal
The number of columns for which no extra packing is used.
empty-space
The number of columns containing values that are only spaces; these will occupy 1 bit.
empty-zero
The number of columns containing values that are only binary 0's; these will occupy 1 bit.
empty-fill
The number of integer columns that don't occupy the full byte range of their type; these are changed to a smaller type (for example, an INTEGER column may be changed to MEDIUMINT).
pre-space
The number of decimal columns that are stored with leading space. In this case, each value will contain a count for the number of leading spaces.
end-space
The number of columns that have a lot of trailing space. In this case, each value will contain a count for the number of trailing spaces.
table-lookup
The column had only a small number of different values, and that were converted to an ENUM before Huffman compression.
zero
The number of columns for which all values are zero.
Original trees
The initial number of Huffman trees.
After join
The number of distinct Huffman trees left after joining trees to save some header space.

After a table has been compressed, myisamchk -dvv prints additional information about each field:

Type
The field type may contain the following descriptors:
constant
All rows have the same value.
no endspace
Don't store endspace.
no endspace, not_always
Don't store endspace and don't do end space compression for all values.
no endspace, no empty
Don't store endspace. Don't 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
Don't store zeros.
always zero
0 values are stored in 1 bit.
Huff tree
The Huffman tree associated with the field
Bits
The number of bits used in the Huffman tree.


Go to the first, previous, next, last section, table of contents.