概述

全局索引是Phoenix的重要特性,合理的使用二级索引能降低查询延时,让集群资源得以充分利用。 本文将讲述如何高效的设计和使用索引。

全局索引说明

全局索引的根本是通过单独的HBase表来存储数据表的索引数据。我们通过如下示例看索引数据和主表数据的关系。

当写入数据到主表时,索引数据也会被同步到索引表中。索引表中的主键将会是索引列和数据表主键的组合值,include的列被存储在索引表的普通列中,其目的是让查询更加高效,只需要查询一次索引表就能够拿到数据,而不用去回查主表。其过程入下图:

Phoenix表就是HBase表,而HBase Rowkey都是通过二进制数据的字典序排列存储,也就意味着Row key前缀匹配度越高就越容易排在一起。

全局索引设计

我们继续使用DATA_TABLE作为示例表,创建如下组合索引。之前我们已经提到索引表中的Row key是字典序存储的,什么样的查询适合这样的索引结构呢?

CREATE INDEX B_C_D_IDX ON DATA_TABLE(B,C,D);

所有字段条件以=操作符为例:

注:上表查询中and条件不一定要和索引组合字段顺序一致,可以任意组合。

在实际使用中我们也只推荐使用1~4,遵循前缀匹配原则,避免触发扫全表。5~7条件就要扫描全表数据才能过滤出来符合这些条件的数据,所以是极力不推荐的。

其它

• 对于order by字段或者group by字段仍然能够使用二级索引字段来加速查询。

• 尽量通过合理的设计数据表的主键规避建更多的索引表,因为索引表越多写放大越严重。

• 使用了ROW_TIMESTAMP特性后不能使用全局索引

• 对索引表适当是的使用加盐特性能提升查询写入性能,避免热点。

本文作者:瑾谦

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

Phoenix:全局索引设计实践相关推荐

  1. [Phoenix] 十、全局索引设计实践

    概述 全局索引是Phoenix的重要特性,合理的使用二级索引能降低查询延时,让集群资源得以充分利用. 本文将讲述如何高效的设计和使用索引. 全局索引说明 全局索引的根本是通过单独的HBase表来存储数 ...

  2. 直播:Phoenix 全局索引原理与实践

    讲师:瑾谦--阿里数据库产品专家 主题:Phoenix 全局索引原理与实践 内容概要:全局索引是Phoneix的核心特性之一,此话题主要内容包括phoenix mutable表全局索引机制原理, 场景 ...

  3. 【Mysql性能调优】高性能表结构及索引设计的最优实践

    数据库表设计 良好的表结构设计是高性能的基石,应该根据系统将要执行的业务查询来设计,这往往需要权衡各种因素.糟糕的表结构设计,会浪费大量的开发时间,严重延误项目开发周期,让人痛苦万分,而且直接影响到数 ...

  4. DTCC 2020 | 阿里云梁高中:DAS基于Workload的全局自动优化实践

    简介:第十一届中国数据库技术大会(DTCC2020),在北京隆重召开.在12.23日性能优化与SQL审计专场上,邀请了阿里巴巴数据库技术团队高级技术专家梁高中为大家介绍DAS之基于Workload的全 ...

  5. DTCC 2020 | 阿里云梁高中:DAS之基于Workload的全局自动优化实践

    简介: 第十一届中国数据库技术大会(DTCC2020),在北京隆重召开.在12.23日性能优化与SQL审计专场上,邀请了阿里巴巴数据库技术团队高级技术专家梁高中为大家介绍DAS之基于Workload的 ...

  6. ElasticSearch 索引设计指南

    作者介绍 许睿哲 2020年12月加入去哪儿网-数据平台团队,目前主要负责公司的 esaas 云服务与实时日志 ELK 平台的开发.维护与优化.主导参与了公司的 ES 架构升级迁移与 ES 平台 SL ...

  7. 干货 | Elasticsearch 索引设计实战指南

    题记 随着 Elastic 的上市,ELK Stack 不仅在 BAT 的大公司得到长足的发展,而且在各个中小公司都得到非常广泛的应用,甚至连"婚庆网站"都开始使用 Elastic ...

  8. Alibaba Code代码索引技术实践:为Code Review提供本地IDE的阅读体验

    作者:曲径     阿里研发基础设施团队 Code Review在研发流程中非常重要,但Web界面中Code Intelligence能力的缺失改变了原有的代码阅读习惯,又增加了阅读成本.本文将介绍阿 ...

  9. 看完这篇文章,再也不怕 Elasticsearch 索引设计

    题记 随着 Elastic 的上市,ELK Stack 不仅在 BAT 的大公司得到长足的发展,而且在各个中小公司都得到非常广泛的应用,甚至连"婚庆网站"都开始使用 Elastic ...

最新文章

  1. centos7安装tomcat8.5
  2. Java8 接口在变化
  3. st庞大股票股吧_黄金变石头!6倍大牛股提前锁定退市,市值蒸发98%,还有这些股票拉响警报(附名单)...
  4. 并发数据结构- 1.1.1 性能
  5. java listnode 合并链表_剑指offer:合并两个排序的链表(Java)
  6. linux下jtag命令,[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD)
  7. JDE 权限,分环境设置权限,PY,PD设置不同权限
  8. Android ASCII编码转换成相对应字符
  9. 杰奇python采集器_【教程】【含PC和WAP源码主题】杰奇1.7+关关采集器+基于Linux小说网站+Win端Samba远程采集+可用采集规则...
  10. python全栈马哥_马哥2018python全栈+爬虫+高端自动化,资源教程下载
  11. 深度学习CUDA最新最佳安装教程
  12. 用java求两个数的最大公因数_Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数...
  13. 基于iOS11的HEVC(H.265)硬编码/硬解码功能开发指南
  14. Tamami教你孕前如何选购防辐射服
  15. C# 身份证号码验证正则和验证函数
  16. 支付宝人脸识别身份证认证(新版SDK)
  17. 面试官问你如何进行程序设计?——设计模式之七大原则——接口隔离、合成复用、迪米特法则以及C++设计实现
  18. 海贝音频384khz_海贝音乐app下载-海贝音乐最新版下载v4.0.1-IT168下载站
  19. 【伪大数据】对QQ空间指定好友2017年说说数据的分析
  20. sort函数数组排序(c++方法)

热门文章

  1. C语言 sizeof 和 strlen 函数区别 - C语言零基础入门教程
  2. mysql怎么分组查询所有数据库_Mysql-4 分组查询与子查询
  3. 妖帝q群机器人_有关酷Q 晨风机器人,契约 qqlite qqlight ,mypc等QQ机器人关停一事的一点想法...
  4. php angular使用,如何使用angular.js PHP从mysql显示数据?
  5. java 发送邮件昵称_利用JavaMail发送QQ邮件
  6. 卫生系统计算机考试内容,2021年卫生资格考试题型是什么样的?一篇搞懂!
  7. 安卓手机qq怎么看密友值_qq亲密关系分数值是什么在哪看 怎么查情侣值或闺蜜值方法...
  8. c语言参数不能用 吗,如何在C语言中禁止“未使用的参数”警告?
  9. android gsensor 坐标,MTK Android G sensor 原理,配置,调试
  10. javascript date php date,JavaScript Date 知识浅析