GBase 8a
性能调优
文章

GBase 8a 性能优化方法分享(4)Hash索引

发表于2024-03-14 15:28:34384次浏览5个评论

      Hash Index 通常可以用来解决等值查询的定位效率,特别是对以单表精确查询为主的应用场景尤为适合,如电信业务中的并发话单查询等(特别是内存基本充足的场景)。

      默认创建GLOBAL的哈希索引。创建全局哈希索引,全局创建索引针对整列,数据按页存储,每个数据块占用多少个页可以在创建索引时指定。当使用GLOBAL关键字时,可以配合使用key_dc_size,这个参数表示指定创建分段Hash Index。分段hash是在用户指定的DC窗口内创建Hash Index,每个分段hash index内部沿用了原有global hash的逻辑和存储结构。由于分段Hash Index的具有数据局部性,因此可以与数据一同进行空间的分段回收。

      在使用上,GBase8a一定是首先进行智能索引过滤的,之后,如果发现查询条件中的等值查询条件列上建立了Hash Index,则使用Hash Index,否则进行全DC扫描。这一点,可以在Trace Log中明显观察到。

      对有实时数据加载的场景,可以先建立无索引的临时表加载数据,再将临时表内数据插入到带索引的同结构目标表中或在临时表上创建索引。一次性处理索引建立,可较大幅度的降低索引带来的维护成本。

    注意事项:

  • 索引是一种有损的优化手段,使用索引通常会带来维护的成本,会影响数据加载及DML操作的性能,实际使用时需根据具体需求而定
  • 选择建立hash索引的列应尽量选择重复值较少的列,否则hash冲突严重,影响hash索引的性能
  • 二进制类型的列不适合使用HASH索引
  • 创建索引时,只能指定单列,不能指定多列创建联合索引

评论

登录后才可以发表评论
崔哥发表于 5个月前
墙角数枝梅,凌寒独自开。遥知不是雪,为有暗香来。
用户头像
levvel发表于 4个月前
评论是一种尊重
用户头像
levvel发表于 3个月前
干货满满!
用户头像
柒柒天晴发表于 2个月前
加油
GBase用户47954发表于 1个月前
感谢作者的精彩分享!