原文  http://jackyrong.iteye.com/blog/2170222

在mysql的myisam引擎中,有一个是容易忽视的,叫压缩索引PACK_KEYS ,

myISAM使用前缀压缩来减小索引大小,默认情况下会压缩字符串,也可以压缩整数

可以使用create table时用PACK_KEYS控制索引压缩的方式。

PACK_KEYS在MySQL手册中如下描述:

如果您希望索引更小,则把此选项设置为1。这样做通常使更新速度变慢,同时阅读速度加快。把选项设置为0可以取消所有的关键字压缩。把此选项设置为DEFAULT时,存储引擎只压缩长的CHAR或VARCHAR列(仅限于MyISAM)。

如果您不使用PACK_KEYS,则默认操作是只压缩字符串,但不压缩数字。如果您使用PACK_KEYS=1,则对数字也进行压缩。

在对二进制数字关键字进行压缩时,MySQL采用前缀压缩:

o        每个关键字需要一个额外的字节来指示前一个关键字中有多少字节与下一个关键字相同。

o        指向行的指针以高位字节优先的顺序存储在关键字的后面,用于改进压缩效果。

这意味着,如果两个连续行中有许多相同的关键字,则后续的“相同”的关键字通常只占用两个字节(包括指向行的指针)。与此相比,常规情况下,后续的关键字占用storage_size_for_key + pointer_size(指针尺寸通常为4)。但是,只有在许多数字相同的情况下,前缀压缩才有好处。如果所有的关键字完全不同,并且关键字不能含有NULL值,则每个关键字要多使用一个字节。(在这种情况中,储存压缩后的关键字的长度的字节与用于标记关键字是否为NULL的字节是同一字节。

比如有个字段保存 文件名,如"abc.pdf",其中pdf大家都是一样的,因此可以

根据这个字段采用压缩索引:

CREATE  TABLE <TABLE_NAME> (

`id` INT NOT NULL ,

`name` VARCHAR(250) NULL ,

PRIMARY KEY (`id`) )

PACK_KEYS = 1;

ALTER TABLE table_name PACK_KEYS = 1;

最新文章

  1. Bootstrap 表单
  2. 34.Android之资源文件res里drawable学习
  3. 浅议iOS网络数据解析
  4. 数据结构——图——最短路径D&amp;F算法
  5. Java中的多线程总结(转)
  6. ScriptCase升级到7.01
  7. cocos2d(CCSprite绑定不规则刚体与精灵一起移动)
  8. Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
  9. SpringBoot 概念和起步
  10. C++单例
  11. java包
  12. leetCode191. 位1的个数
  13. javascript:正则表达式、一个表单验证的例子
  14. 洗礼灵魂,修炼python(68)--爬虫篇—番外篇之webbrowser模块
  15. php的语法
  16. c# 抽象类和抽象方法
  17. JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()
  18. 32bit 天堂服务端假设教程
  19. AndroidStudio3.0到3.1遇到的坑
  20. c++ c++ 与 Java

热门文章

  1. Python离线项目迁移部署
  2. 页面高度自适应方法(PC、移动端都适用)
  3. foobox,基于foobar2000汉化版的CUI配置整合版
  4. 广告行业中那些趣事系列7:实战腾讯开源的文本分类项目NeuralClassifier
  5. Python 之解释器
  6. 038.集群网络-K8S网络实现
  7. Java 借助poi操作PDF工具类
  8. rest_framework之认证与权限 token不存数据库认证
  9. Android之注册界面练习
  10. vnpy源码阅读学习(8):关于app