Posted by:
努力记

努力记,通过记录,计划,让自己的努力可以触碰彩虹!

2,406

Mysql:压缩表、内存表

  • 2013-06-18
  • 暂无评论

压缩表的特点

一张用myisampack实用程序制作的只读表.
解压缩代码存在于所有mysql分发中,以便使没有myisampack的连接也能读取用myisampack压缩的表
占据很小的磁盘空间
每个记录被单独压缩.一个记录的头是一个定长的(1~~3个字节)这取决于表的最大记录.每列以不同的方式被压缩.一些常用的压缩类型是:

  • 通常对每列有一张不同的哈夫曼表
  • 后缀空白压缩
  • 前缀空白压缩
  • 用值0的数字使用1位存储
  • 如果整数列的值有一个小范围,列使用最小的可能类型来存储.例如:如果所有的值在0到255之间,一个bigint可以作为一个tinyint存储
  •  如果列仅有可能值的一个小集合,列类型被转换到enum
  • 列可以使用上面的压缩方法的组合

能处理定长或动态长度的记录,去不能处理blob或者text列
能用myisamchk解压缩
mysql能支持不同的索引类型,但一般的类型是isam,这是一个B树索引并且能粗略的为索引文件计算大小为(key_length+4)*0.67,在所有的键上的总和.
字符串索引是空白压缩的。如果第一个索引是一个字符串,它可将压缩前缀如果字符串列有很多尾部空白或是一个总部能甬道全长的varchar列,空白压缩使索引文件更小.如果很多字符串有相同的前缀.

内存表的特点

mysql内部的heap表使用每偶溢出去的100%动态哈希并且没有与删除有关的问题.
只能通过使用在堆表中的一个索引来用等式存取东西(通常用'='操作符)
堆表的缺点是:

  • 想要同时使用的所有堆表需要足够的额外内存
  • 不能在索引的一个部分搜索
  • 不能按顺序搜索下一个条目(即,使用这个索引做一个order by)
  •  mysql不能算出在2个值之间大概有多少行.这被优化器使用是用来决定使用哪个索引的,但是在另一个方面甚至不需要磁盘寻道


back up ↑

无觅相关文章插件,快速提升流量