mysql客户端程序功能_MySQL客户端和实用工具程序

8.2. myisampack:生成压缩、只读MyISAM表

myisampack工具可以压缩MyISAM表.MYIsampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。

当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。

MySQL使用mmap()对压缩的表进行内存映射。如果mmap()不工作,MySQL返回到普通读/写文件操作。

请注意:

·如果用--skip-external-locking选项调用mysqld服务器,如果在压缩过程中表可能被更新,调用myisampack不是一个好注意。

·表压缩后,它变为只读。这是故意的(例如当访问CD上的压缩的表时)。允许写入到压缩的表位于我们的TODO列表中,但优先级较低。

·myisampack可以压缩BLOB或TEXT列。旧版本ISAM表的pack_isam程序不可以。

调用myisampack的方法:shell>myisampack [options] filename ...

文件名应为索引(.MYI)文件的文件名。如果不在数据库目录,应指定文件的路径名。允许忽略.MYI扩展名。

myisampack支持下面的选项:

·--help,-?

显示帮助消息并退出。

·--backup,-b

使用tbl_name.OLD名备份表数据文件。

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

写调试日志。debug_options字符串通常为'd:t:o,file_name'。

·--force,-f

产生一个压缩的表,即使它比原始表大,或如果以前调用myisampack的中间文件存在。(myisampack压缩表时在数据库目录中创建一个名为tbl_name.TMD的中间文件。如果杀掉myisampack,.TMD文件会被删除)。通常情况,如果myisampack发现tbl_name.TMD存在则退出并提示错误。用--force,myisampack则一定压缩表。

·-join=big_tbl_name,-j big_tbl_name

将命令行中的所有表联接为一个表big_tbl_name。将要连接的所有表必须有相等的结构(相同的列名和类型,相同的索引等等)。

·--pack length=len,-p len

指定记录长度存储大小,以字节计。值应为1、2或者3。myisampack保存所有长度指针为1、2或者3字节的行。在大多数正常情况下,myisampack在开始压缩文件前可以确定准确的长度值,但在压缩过程中它可以提示它可能已经使用了一个短的长度。在这种情况下,myisampack输出一条提示,下次你压缩同一文件时,你可以使用更短的记录长度。

·--silent,-s

沉默模式。只有发生错误时才写输出。

·--test,-t

没有实际地压缩表,只是测试压缩。

·--tmpdir=path,-T path

使用myisamchk创建临时文件的目录。

·--verbose,-v

冗长模式。写压缩操作过程相关信息和其结果。

·--version,-V

显示版本信息并退出。

·--wait,-w

如果表正使用则等待并重试。如果用--skip-external-locking选项调用了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.frmshell>myisamchk -dvv stationMyISAM file:     stationIsam-version:  2Creation time: 1996-03-13 10:08:58Recover time:  1997-02-02  3:06:43Data records:              1192  Deleted blocks:              0Datafile parts:            1192  Deleted data:                0Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2Max datafile length:   54657023  Max keyfile length:   33554431Recordlength:               834Record format: Fixed lengthtable description:Key Start Len Index   Type                 Root  Blocksize    Rec/key1   2     4   unique  unsigned long        1024       1024          12   32    30  multip. text                10240       1024          1Field Start Length Type1     1     12     2     43     6     44     10    15     11    206     31    17     32    308     62    359     97    3510    132   3511    167   412    171   1613    187   3514    222   415    226   1616    242   2017    262   2018    282   2019    302   3020    332   421    336   422    340   123    341   824    349   825    357   826    365   227    367   228    369   429    373   430    377   131    378   232    380   833    388   434    392   435    396   436    400   437    404   138    405   439    409   440    413   441    417   442    421   443    425   444    429   2045    449   3046    479   147    480   148    481   7949    560   7950    639   7951    718   7952    797   853    805   154    806   155    807   2056    827   457    831   4shell>myisampack station.MYICompressing station.MYI: (1192 records)- Calculating statisticsnormal:     20  empty-space:   16  empty-zero:     12  empty-fill:  11pre-space:   0  end-space:     12  table-lookups:   5  zero:         7Original trees:  57  After join: 17- Compressing file87.14%Remember to run myisamchk -rq on compressed tablesshell>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.frmshell>myisamchk -dvv stationMyISAM file:     stationIsam-version:  2Creation time: 1996-03-13 10:08:58Recover time:  1997-04-17 19:04:26Data records:               1192  Deleted blocks:              0Datafile parts:             1192  Deleted data:                0Datafile pointer (bytes):      3  Keyfile pointer (bytes):     1Max datafile length:    16777215  Max keyfile length:     131071Recordlength:                834Record format: Compressedtable description:Key Start Len Index   Type                 Root  Blocksize    Rec/key1   2     4   unique  unsigned long       10240       1024          12   32    30  multip. text                54272       1024          1Field Start Length Type                         Huff tree  Bits1     1     1      constant                             1     02     2     4      zerofill(1)                          2     93     6     4      no zeros, zerofill(1)                2     94     10    1                                           3     95     11    20     table-lookup                         4     06     31    1                                           3     97     32    30     no endspace, not_always              5     98     62    35     no endspace, not_always, no empty    6     99     97    35     no empty                             7     910    132   35     no endspace, not_always, no empty    6     911    167   4      zerofill(1)                          2     912    171   16     no endspace, not_always, no empty    5     913    187   35     no endspace, not_always, no empty    6     914    222   4      zerofill(1)                          2     915    226   16     no endspace, not_always, no empty    5     916    242   20     no endspace, not_always              8     917    262   20     no endspace, no empty                8     918    282   20     no endspace, no empty                5     919    302   30     no endspace, no empty                6     920    332   4      always zero                          2     921    336   4      always zero                          2     922    340   1                                           3     923    341   8      table-lookup                         9     024    349   8      table-lookup                        10     025    357   8      always zero                          2     926    365   2                                           2     927    367   2      no zeros, zerofill(1)                2     928    369   4      no zeros, zerofill(1)                2     929    373   4      table-lookup                        11     030    377   1                                           3     931    378   2      no zeros, zerofill(1)                2     932    380   8      no zeros                             2     933    388   4      always zero                          2     934    392   4      table-lookup                        12     035    396   4      no zeros, zerofill(1)               13     936    400   4      no zeros, zerofill(1)                2     937    404   1                                           2     938    405   4      no zeros                             2     939    409   4      always zero                          2     940    413   4      no zeros                             2     941    417   4      always zero                          2     942    421   4      no zeros                             2     943    425   4      always zero                          2     944    429   20     no empty                             3     945    449   30     no empty                             3     946    479   1                                          14     447    480   1                                          14     448    481   79     no endspace, no empty               15     949    560   79     no empty                             2     950    639   79     no empty                             2     951    718   79     no endspace                         16     952    797   8      no empty                             2     953    805   1                                          17     154    806   1                                           3     955    807   20     no empty                             3     956    827   4      no zeros, zerofill(2)                2     957    831   4      no zeros, zerofill(1)                2     9

myisampack显示下面的各种信息:

·normal

不需要进行额外压缩的列的数量。

·empty-space

只包含空格的列的数量;占一个比特。

·empty-zero

只包含二进制零的列的数量;占一个比特。

·empty-fill

不占该类全字节范围的整数列的数量;这些列被改为较小的类型。例如,如果所有值的范围为从-128到127,BIGINT列(8个字节)可以保存为TINYINT列(1个字节)。

·pre-space

用引导空格保存的十进制列的数量。在这种情况下,每个值包含一个引导空格的数量计数。

·end-space

有大量结尾空格的列的数量。在这种情况下,每个值包含一个结尾空格的数量计数。

·table-lookup

该列只有少量的不同的值,在进行哈夫曼压缩前被转换为一个ENUM。

·zero

所有值为零的列的数量。

·Original trees

哈夫曼树的最初数量。

·After join

联接树以节省一些头空间之后留下的哈夫曼树的数量。

表被压缩后,myisamchk -dvv为每列输出详细信息:

·Type

列的类型。该值可以包含下面的任何描述符:

oconstant

所有行具有相同的值。

ono endspace

不保存结尾空格。

ono endspace,not_always

不保存结尾空格并且对于所有的值不压缩结尾空格。

ono endspace,no empty

不保存结尾空格。不保存空值。

otable-lookup

列被转换为一个ENUM。

ozerofill(n)

值中最有意义的n字节总为0,并且不保存。

ono zeros

不保存零。

oalways zeros

用一个位保存零值。

·Huff tree

列相关的哈夫曼树的数量。

·Bits

哈夫曼树使用的位数。

运行myisampack后,必须运行myisamchk以重新创建索引。此时,你也可以排序索引块并创建MySQL优化器需要的统计信息以更有效地工作:shell>myisamchk -rq --sort-index --analyze tbl_name.MYI

将压缩的表安装到MySQL数据库目录中后,应执行mysqladmin flush-tables以强制mysqld使用新的表。

要想解压缩一个压缩的表,使用myisamchk或isamchk的--unpack选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值