myisampack

提供: Wikiducca
移動: 案内検索

圧縮された読み取り専用MyISAM テーブルを作成するコマンド。
通常、myisampack は 40%-70% データファイルを圧縮できる。

テスト対象

  • 対象DB
pack_test
  • 対象テーブル
txt_tbl

実行前サイズ(単位:byte)

[root@server ~]# cd /var/lib/mysql/data/pack_test
[root@server pack_test]# ls -la
合計 40
drwx------  2 mysql mysql  4096  9月 15 18:33 .
drwx------  6 mysql mysql  4096  9月 15 18:35 ..
-rw-rw----  1 mysql mysql    61  9月 15 17:44 db.opt
-rw-rw----  1 mysql mysql 10800  9月 15 18:34 txt_tbl.MYD
-rw-rw----  1 mysql mysql  2048  9月 15 18:34 txt_tbl.MYI
-rw-rw----  1 mysql mysql  8586  9月 15 18:31 txt_tbl.frm
[root@server pack_test]# 

実行

myisampack

[root@server pack_test]# myisampack -v txt_tbl
Compressing txt_tbl.MYD: (100 records)
- Calculating statistics
            
normal:      1  empty-space:       0  empty-zero:         0  empty-fill:   0
pre-space:   0  end-space:         0  intervall-fields:   0  zero:         0
Original trees:  2  After join: 2
- Compressing file
Min record length:     15   Max length:     15   Mean total length:     19
82.01%     
Remember to run myisamchk -rq on compressed tables

User time 0.00, System time 0.00
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 314, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 2, Involuntary context switches 12
[root@server pack_test]# 

myisamchk

インデックスを再生成する。

[root@server pack_test]# myisamchk -rq --sort-index --analyze txt_tbl.MYI 
- check record delete-chain
- recovering (with sort) MyISAM-table 'txt_tbl.MYI'
Data records: 100
- Fixing index 1
- Sorting index for MyISAM-table 'txt_tbl.MYI'
[root@server pack_test]# 

テーブルを FLUSH

MySQL> FLUSH TABLE txt_tbl;


実行後サイズ(単位:byte)

[root@server pack_test]# ls -la
合計 32
drwx------  2 mysql mysql 4096  9月 15 18:50 .
drwx------  6 mysql mysql 4096  9月 15 18:35 ..
-rw-rw----  1 mysql mysql   61  9月 15 17:44 db.opt
-rw-rw----  1 mysql mysql 1950  9月 15 18:34 txt_tbl.MYD
-rw-rw----  1 mysql mysql 2048  9月 15 18:50 txt_tbl.MYI
-rw-rw----  1 mysql mysql 8586  9月 15 18:31 txt_tbl.frm
[root@server pack_test]# 

結果

txt_tbl.MYD が 10800 byte から 1950 byte まで圧縮された。(82.01%)


メモ

  • 更新がかかる可能性があるテーブルの場合は更新がかからないようにする
  • myisampackしたテーブルは参照しかできない(更新、追加が出来ない)
  • アンパックするにはmyisamchkコマンドに--unpackオプションをつけて実行


参考URL