code搬运工_关于Phoenix的Secondary Index

存储在HBase中的数据:
(1) HBase唯一索引 primary row key
(2) 全表扫描 scan
(3) 二级索引(辅助索引)
通过列或表达式作为备用rowkey, 实现点查找和范围扫描

covered indexes : 覆盖索引

  • 只需找到索引即可,无需返回主表,节省读取时间开销
  • 只需将我们关心的数据绑定在索引行中即可
    (select列和where列)
    create index my_index on my_table(v1,v2)include(v3)

Functional indexes : 函数索引 (4.3以上引入)

  • 在表达式上建立索引
  • 查询使用该表达式时 , 索引可用于检索结果
    create index upper_name_index on emp(upper(first_name||''||last_name))
    select emp_id from emp where upper(first_name||''||last_name)

Global Indexes : 全局索引

  • 适用于多读少写场景

  • 通过单独HBase表存储数据表的索引数据

  • 索引数据&主表数据 :
    当写入数据到主表时,索引数据会被同步到索引表中
    索引表中主键是索引列和数据表主键的组合值
    include列存储到索引表的普通列中,查询性能更高效
    只需查询一次索引表就能获得数据,不用回查主表

  • 使用row_timstamp特性不能使用全局索引

  • 合理设计数据表主键规避建过多索引表

  • order by groupBy可以使用全局索引

  • 对索引表适当使用加盐特性提高性能

Local Indexes : 本地索引

  • 适用于写多读少,空间有限场景
  • Phoenix查询时自动选择是否使用本地索引
  • 使用本地索引,避免进行写操作带来的网络开销
  • 索引表和表数据存放相同服务器中
  • 查询字段不完全是索引字段也会被使用
    本地索引与全局索引区别 :
  • 所有本地索引都单独存储在同一张共享表中。
  • 无法预先确定region位置 , 读数据会检查每个region , 读性能开销大

Index Population : 异步索引

  • 默认创建索引,会在create index调用期间同步填充索引

  • Phoenix 4.5开始支持DDL语句支持ASYNC,异步完成索引填充
    create index async_index on my_schema.my_table(v)ASYNC

  • 通过HBase命令行单独启动填充索引表mr作业

  • 当mr作业完成时,才会激活索引并开始查询中使用
    $ {HBASE_HOME} / bin / hbase org.apache.phoenix.mapreduce.index.IndexTool --schema MY_SCHEMA --data-table MY_TABLE --index-table ASYNC_IDX --output-path ASYNC_IDX_HFILES

    Index Usage:索引用法

  • 除非查询中引用的所有列都包含在索引中,否则不会使用全局索引

  • 通过在索引中包含v2列创建覆盖索引
    create index my_index on my_table(v1) include(v2)

  • 提示查询强制使用索引
    select /* + index(my_table my_index)*/ v2 from my_table where v1=‘foo'

  • 创建本地索引
    create local index my_index on my_table(v1)

    Index Removal : 移除索引

    `drop index my_index on my_table`
    
  • 数据表中删除索引列,会自动删除索引(含覆盖索引)

    Index Properties : 索引属性

  • create index可以传递属性应用于基础HBase表

  • 对其进行加盐操作:
    create index my_index on my_table(v2 desc,v1) include(v3)
    salt_buckets=10,data_block_encoding=‘NONE'

  • 主表被加盐,索引表以相同方式自动为全局索引加盐

  • 相对于主表与索引表大小,索引MAX_FILESIZE向下调整

  • 本地索引不允许salt_buckets

    Consistency Guarantees : 一致性保证

  • 索引更新与HBase提供的相同强一致性保证同步

  • 索引存储与数据表不同的表中 : 表的属性和索引的类型
    服务器端崩溃导致提交失败,表和索引之间一致性有所不同
    Transactional Tables : 交易表
    Immutable Tables : 不可变表
    非事务性 , 不可变表的索引没有适当的机制来自动处理提交失败。
    保持表和索引之间的一致性留给客户端来处理。
    因为更新是幂等的,所以最简单的解决方案是让客户端继续重试一批突变,
    直到它们成功为止
    Mutable Tables : 可变表

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • 为什么需要Secondary Index 对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowk...
    4ea0af17fd67阅读 10,947评论 0 5
  • Apache Phoenix 常用操作 基础知识 1****、****Phoenix 主要技术点 a、将SQL转化...
    4ea0af17fd67阅读 8,238评论 0 2
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,817评论 5 116
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,317评论 0 9
  • 有一段的时间没有写简书了,也是感觉自己目前的现状不佳的时候,试图去找问题的根源,但是由于工作的压力,再加上精力有...
    一心向上的大飞阅读 286评论 2 3