Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  myisampack — 圧縮された読み取り専用の MyISAM テーブルの生成

4.6.5 myisampack — 圧縮された読み取り専用の MyISAM テーブルの生成

myisampack ユーティリティーは MyISAM テーブルを圧縮します。myisampack は、テーブルの各カラムを独立して圧縮することによって機能します。通常、myisampack はデータファイルを 40% から 70% パックします。

テーブルがあとで使用される場合、カラムの解凍に必要な情報をサーバーがメモリー内に読み取ります。これにより、個々の行をアクセスする際のパフォーマンスが大幅に向上します。これは、圧縮解除しなければならないのは 1 つの行のみであるためです。

MySQL は、圧縮されたテーブルでメモリーのマッピングを行う場合に、可能であれば mmap() を使用します。mmap() が機能しない場合、MySQL は普通のファイル読み取り/書き込み操作に戻ります。

次の点に注意してください。

  • mysqld サーバーが外部ロックが無効化された状態で起動された場合、パック処理の最中にサーバーによってテーブルが更新される可能性がある場合は、myisampack の起動は推奨されません。サーバーが停止している状態でテーブルを圧縮するのがもっとも安全です。

  • テーブルは、パック後に読み取り専用になります。通常これは意図されたものです (CD 内のパックされたテーブルにアクセスする場合など)。

  • myisampack はパーティション化されたテーブルをサポートしません。

myisampack は次のように起動します。

shell> myisampack [options] file_name ...

各ファイル名引数はインデックス (.MYI) ファイルの名前にしてください。データベースディレクトリ内にいない場合、ファイルへのパスを指定するようにしてください。.MYI 拡張子は省略可能です。

myisampack でテーブルを圧縮したら、myisamchk -rq を使用してインデックスを再構築するようにしてください。セクション4.6.3「myisamchk — MyISAM テーブルメンテナンスユーティリティー」

myisampack は次のオプションをサポートします。また、オプションファイルを読み取り、セクション4.2.7「オプションファイルの処理に影響するコマンド行オプション」に説明されている、それらを処理するためのオプションもサポートします。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --backup, -b

    tbl_name.OLD という名前を使用して、各テーブルのデータファイルのバックアップを作成します。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --force, -f

    パックされたテーブルが元のテーブルより大きくなる場合や、以前に myisampack を呼び出した際の中間ファイルが存在する場合でも、パックされたテーブルを生成します (myisampack はテーブルの圧縮中に、 tbl_name.TMD という名前の中間ファイルをデータベースディレクトリに作成します。myisampack を強制終了した場合、.TMD ファイルは削除されないことがあります。)通常、myisampacktbl_name.TMD が存在することを検出すると、エラーで終了します。--force を使用すると、myisampack は必ずテーブルをパックします。

  • --join=big_tbl_name, -j big_tbl_name

    コマンド行で指名されたすべてのテーブルを、単一のパックされたテーブル big_tbl_name に結合します。結合されるすべてのテーブルは、必ずまったく同一の構造でなければなりません (同一カラム名、型、同一インデックスなど)。

    結合操作の前に、big_tbl_name が存在していなければなりません。コマンド行で指名され big_tbl_name にマージされるすべてのソーステーブルが存在していなければなりません。ソースのテーブルは結合のために読み取られますが、変更はされません。この結合操作では、big_tbl_name.frm ファイルは作成されないので、結合操作の完了後、.frm ファイルをソーステーブルの 1 つからコピーして big_tbl_name.frm と名付けます。

  • --silent, -s

    サイレントモード。エラーが発生したときのみ出力を書き出します。

  • --test, -t

    実際にテーブルをパックせず、パックのテストのみを実行します。

  • --tmpdir=path, -T path

    指名されたディレクトリを、myisampack が一時ファイルを作成する場所として使用します。

  • --verbose, -v

    冗長モード。パック操作の進行状況とその結果に関する情報を書き込みます。

  • --version, -V

    バージョン情報を表示して終了します。

  • --wait, -w

    テーブルが使用中の場合、待機してから再度試みます。mysqld サーバーが外部ロックが無効化された状態で起動された場合、パック処理の最中にサーバーによってテーブルが更新される可能性がある場合は、myisampack の起動は推奨されません。

次のコマンドシーケンスは典型的なテーブル圧縮セッションを表しています。

shell> ls -l station.*
-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%
Remember to run myisamchk -rq on compressed tables

shell> ls -l station.*
-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
Datafile pointer (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

myisampack は次の種類の情報を表示します。

  • normal

    追加のパックが使用されていないカラムの数。

  • empty-space

    スペースのみの値を含むカラムの数。これらは 1 ビットを占めます。

  • empty-zero

    バイナリのゼロのみの値を含むカラムの数。これらは 1 ビットを占めます。

  • empty-fill

    それぞれの型のバイト範囲をすべて占領しない整数カラムの数。これらはより小さい型に変更されます。たとえば、BIGINT カラム (8 バイト) のすべての値が -128 から 127 の範囲内にある場合は、このカラムを TINYINT カラム (1 バイト) として格納できます。

  • pre-space

    先頭にスペースが付いて保存されている 10 進数カラムの数。この場合、各値は先頭のスペースの数のカウントを含んでいます。

  • end-space

    後続のスペースを多く含むカラムの数。この場合、各値は後続のスペースの数のカウントを含んでいます。

  • table-lookup

    カラムには少数の異なる値のみがあり、ハフマン圧縮の前に ENUM に変換されました。

  • zero

    すべての値がゼロのカラムの数。

  • Original trees

    もともとのハフマンツリーの数です。

  • After join

    ヘッダースペースを節約するため、ツリーの結合のあとに残った異なるハフマンツリーの数。

テーブルの圧縮後、myisamchk -dvv が表示する Field 行には、各カラムに関する追加情報が含まれます。

  • Type

    データ型。この値は次のいずれかのディスクリプタを含むことがあります。

    • constant

      すべての行は同じ値を持っています。

    • no endspace

      エンドスペースを保存しません。

    • no endspace, not_always

      エンドスペースを保存せず、またすべての値にエンドスペース圧縮を行いません。

    • no endspace, no empty

      エンドスペースを保存しません。空の値を保存しません。

    • table-lookup

      カラムは ENUM に変換されました。

    • zerofill(N)

      値の中の最上位の N バイトは常に 0 であり、保存されません。

    • no zeros

      ゼロを保存しません。

    • always zero

      ゼロ値は 1 ビットを使用して保存されます。

  • Huff tree

    カラムに関連しているハフマンツリーの数。

  • Bits

    ハフマンツリーで使用されているビット数。

myisampack の起動後、インデックスを再作成するにはmyisamchk を起動しなければいけません。このとき、MySQL オプティマイザの動作効率化を図るために、インデックスブロックのソートと統計の作成を行うことができます。

shell> myisamchk -rq --sort-index --analyze tbl_name.MYI

パックされたテーブルを MySQL データベースディレクトリにインストールしたあと、mysqld が新しいテーブルを使用することを強制するため、mysqladmin flush-tables を実行するようにしてください。

パックされたテーブルをアンパックするには、myisamchk に対して --unpack オプションを使用してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.