Myisampack - 生成压缩的只读MyISAM表

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年12月25日 (一) 09:54的版本 (创建页面,内容为“ myisampack工具用于压缩MyISAM表。myisampack通过分别压缩表中的每一列来实现。通常,myisampack可以将数据文件压缩到原来的40%到70%。 <br> 当稍后使用该表时,服务器会将解压缩列所需的信息读取到内存中。这在访问单个行时会导致更好的性能,因为您只需要解压缩一行。 MySQL尽可能使用mmap()对压缩表进行内存映射。如果mmap()无法正常工作,MySQL会回退到…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

myisampack工具用于压缩MyISAM表。myisampack通过分别压缩表中的每一列来实现。通常,myisampack可以将数据文件压缩到原来的40%到70%。


当稍后使用该表时,服务器会将解压缩列所需的信息读取到内存中。这在访问单个行时会导致更好的性能,因为您只需要解压缩一行。

MySQL尽可能使用mmap()对压缩表进行内存映射。如果mmap()无法正常工作,MySQL会回退到正常的读写文件操作。


请注意以下几点:

  • 如果mysqld服务器是在禁用外部锁定的情况下调用的,如果在打包过程中服务器可能会更新表,那么调用myisampack不是一个好主意。最安全的做法是在服务器停止时压缩表。
  • 打包一个表后,它将成为只读的。这通常是有意为之的(例如在CD上访问已打包的表)。
  • myisampack不支持分区表。


调用myisampack的方式如下:

myisampack [options] file_name ...


每个文件名参数都应该是索引(.MYI)文件的名称。如果您不在数据库目录中,则应指定文件的路径名。可以省略.MYI扩展名。

使用myisampack压缩表后,请使用myisamchk -rq重建其索引。