myisam压缩(前缀压缩)索引
myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其他值和第一个值进行比较得到相同前缀的字节数(长度)和剩余的不同后缀部分(即把相同部分去掉),把这部分存储起来即可(相同前缀长度和不同后缀部分字符串)。如:索引块中的第一个值是perform,第二个是performance,那么第二个值的前缀压缩后存储的是类似7,ance,这样的形式,myisam对行指针也采用类似的前缀压缩方式。
压缩块使用更少的空间,代价是某些操作可能更慢,因为每个值的压缩前缀都依赖于前面的值,所以myisam查找时无法在索引块使用二分查找而只能从头开始扫描,正序的扫描速度还不错,但如果是倒序扫描,如:order by desc就不是很好了,所有在块中查找某一行的操作平均都需要扫描半个索引块。
测试表明,对于CPU密集型应用,因为扫描需要随机查找,压缩索引使得myisam在索引查找上要慢好几倍,压缩索引的倒序扫描就更慢了,压缩索引需要在CPU内存资源与磁盘之间做权衡,压缩索引可能只需要十分之一大小的磁盘,如果是IO密集型应用,对于某些查询带来的好处会比成本多很多。即压缩索引适合IO密集型应用,不太适合CPU密集型应用。
可以在create table语句中指定pack_keys参数来控制myisam表的索引压缩方式:
PACK_KEYS [=] {0 | 1 | DEFAULT}
0: 表示关闭索引压缩
1: 表示开启数字和字符串压缩
default:表示只压缩超长字符串char和varchar列
如果建表时不指定这个选项,那么默认只压缩字符串,不压缩数字
myisam压缩(前缀压缩)索引的更多相关文章
- MyISAM的前缀压缩索引在索引块中的组织方式
纯粹自己的理解,哪位大佬看到了还请指正. 首先贴一张<高性能MySQL>中的一段话: 这句话的意思是说,MyISAM使用b+树组织索引.也就是说无论索引压缩与否,组织方式一定是B+树. 下 ...
- mysql索引之八:myisam压缩(前缀压缩)索引
myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其 ...
- 腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊
转自:http://data.qq.com/article?id=817 三.Hermes设计概要 架构描述 系统核心进程均采用分散化设计,根据业务发展需求,可随意扩缩容机器; 周期性数据直接通过td ...
- 【转】MYISAM表批量压缩
关于对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档 ...
- MyISAM和InnoDB的索引实现
在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引.我们主要分析B-Tree 索引. B-Tree 索引是 MyS ...
- MyISAM与InnoDB的索引实现区别
一 MyISAM索引实现 1. 主键索引 MyISAM引擎使用B+树作为索引结果,叶节点的data域存放的是数据记录的地址.下图为MyISAM表的主索引,Col1为主键. 2. 辅助索引 在MyISA ...
- Linux下的压缩和解压缩命令——gzip/gunzip
gzip命令 gzip命令用来压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名. gzip是在Linux系统中经常使用的一个对文件进行压 ...
- Linux下的压缩和解压缩命令——zip/unzip
zip命令 zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名 的压缩文件. 选项: -A 调整可执行的自动解压缩文件. -b<工作目录> ...
- linux 学习随笔-压缩和解压缩
.gz 由gzip压缩工具压缩的文件 .bz2 由bzip2压缩工具压缩的文件 .tar 由tar打包程序打包的文件 .tar.gz 先由tar打包,gzip压缩 .tar.bz2 先由tar打包,b ...
随机推荐
- JS验证只允许输入数字
1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...
- 使用EXECUTE IMMEDIATE来生成含有绑定变量的SQL
一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现.也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划.D ...
- Android课程---qq登陆页面(练习)
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- response的Writer输出数据的问题
package cn.itcast.response; import java.io.IOException; import java.io.OutputStream; import java.io. ...
- WEB应用中的普通Java程序如何读取资源文件
package cn.itcast; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Serv ...
- Interface => IDataErrorInfo
Introduction to common Interfaces IDataErrorInfo Provides the functionality to offer custom error in ...
- 简单的cc攻击防御
简单的cc攻击防御cckiller 一.下载#wget wget --no-check-certificate https://zhangge.net/wp-content/uploads/files ...
- Amoeba For MySQL读写分离
Amoeba安装,参考http://hi.baidu.com/itfenqing/item/79fe989838e1e8ad83d2959c Amoeba版本为:amoeba-mysql-1.3.1- ...
- P1074 靶形数独 - 40
#include <bits/stdc++.h> #define searchnext(x, y) y == 9 ? search(x + 1, 1) : search(x, y + 1) ...
- 利用AdaBoost元算法提高分类性能
当做重要决定时,大家可能都会吸取多个专家而不只是一个人的意见.机器学习处理问题时又何尝不是如此?这就是元算法背后的思路.元算法是对其他算法进行组合的一种方式. 自举汇聚法(bootstrap aggr ...