关于PostgreSQL的GiST索引之五

  • 时间:
  • 浏览:0
  • 来源:uu快3游戏_uu快3计划_苹果版

2)对ltree数组中的所有ltree的所有标签值都进行哈希设置bit位得到一一八个多多 签名向量

5. 总结:GiST还是GIN?

PostgreSQL中对太大集合数据类型一同提供GiST和GIN某种索引操作符类,该选哪个好,有时给你头疼。对查询操作,无疑GIN索引要优于GiST。因此 对更新操作,GIN索引要为集合中的每个元素生成一一八个多多 项目,而GiST是为整个集合生成一一八个多多 项目,太大GiST在更新操作上有优势GIN索引的那先 的间题很好量化,由GIN索引带来的更新操作的额外负担和平均每条记录含高高的集合数据的大小成正比。而GiST索引在查询上的性能表现就严重依赖于操作符类要怎样在索引项目中存储集合数据了。有没人 压缩?有损压缩还是无损压缩?压缩损耗有多大?太大要结合使用场景和GiST的压缩算法具体那先 的间题具体分析。

1)所有索引项含高的key的集合都采用签名向量压缩

contrib/pg_trgm/trgm_gist.c

4.1 intarray

PostgreSQL为数组提供了默认的GIN索引操作符。因为想对int数组尝试GiST索引,能只能使用intarray扩展模块带来的一一八个多多 GiST索引操作符类

contrib/intarray/_int_gist.c

相关代码

2)对非叶节点的索引项,因为key的数目超过199,进行无损压缩。

的算法是签名向量和Rtree的混合体。太大它既支持比较操作符(=, >),又支持匹配操作符(@>, 1)叶节点的索引项详细存储原始ltree数据

相关代码

引入某种能只能表达路径的数据类型ltree,比如:Top.Science.Astronomy.Astrophysics 。

GiST索引可适用于多维数据类型和集合数据类型,对多维数据类型使用Rtree的索引算法,对集合数据类型RD-tree因为签名文件(是全是 可不都里能 只能叫利用签名向量压缩的

gist_ltree_ops的签名向量同样很小,损耗很大。gist_ltree_ops对单个标签的匹配查询速率很低,因此 作为匹配条件的路径中一般含高多个标签,太大查询速率能只能得到成倍提高。

使用签名向量的形式有损压缩索引项,和hstore的GiST索引例如。

1)对叶节点的索引项,因为key的数目超过199,报错。

http://blog.chinaunix.net/uid-207264000-id-4824895.html

gist__intbig_ops操作符类

1)叶节点的索引项存储pg_trgm三元词的数组

相关代码

  压缩法律法律依据为依次存放key和该key再次出现的次数。因此 这俩 法律法律依据对重复key比较少的场合,不但只能起到压缩的作用,反而更膨胀了。

gist__ltree_ops用于索引ltree的数组,采用例如hstore的GiST索引的签名向量的算法。

)的索引算法。签名文件的索引算法因为采用有损压缩的法律法律依据保存key集合,太大搞不好会遇到性能陷阱。前面因为详细介绍了tsvector和hstore的GiST索引,它们都采用了签名文件的索引算法,只不过签名向量的大小,叶节点的索引项是是不是用签名向量压缩等细节不一样。下面再简单介绍因此 几种GiST索引采用签名文件索引算法的数据类型。

相关代码 contrib/ltree/_ltree_gist.c

因为pg_trgm的GiST索引的签名向量比较小,每次查询还要扫描的索引节点数必然太大,会很影响速率。

2)非叶节点的索引项存储标签集合的签名向量和Rtree还要的边界值

3)签名向量的大小为224bit

采用RD-tree的索引算法,索引项放满int型key的集合。

3)签名向量的大小为64bit

2)签名向量的大小为2016bit相关代码 contrib/intarray/_intbig_gist.c

3)签名向量的大小为96bit

contrib/ltree/ltree_gist.c

2)非叶节点的索引项存储其含高的所有三元词集合的签名向量

,因为三元词含高高多字节字符,通过先计算CRC再取前八个字节的法律法律依据压缩。

ltree

4.2 pg_trgm

pg_trgm模块提供的gist_trgm_ops操作符类能只能把text数据切成若干三元词,并使用签名向量的形式压缩存储那先 三元词,索引算法和tsvetor的GiST索引例如。

具体的测试实例可参考下面这篇文章。

gist__int_ops操作符类

1)所有索引项都采用签名向量压缩

  pg_trgm生成三元词时,內部用了八个字节存储

gist__ltree_ops操作符类