添加如下配置到 HBase 的 HRegionserver 节点的 hbase-site.xml
hbase.regionserver.wal.codec
org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCod ec
分发到其他服务器
/home/xsync /opt/module/hbase/conf/hbase-site.xml
Global Index 是默认的索引格式,创建全局索引时,会在 HBase 中建立一张新表。也就是说索引数据和数据表是存放在不同的表中的,因此全局索引适用于多读少写的业务场景。
写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。
在读数据的时候 Phoenix 会选择索引表来降低查询消耗的时间。
连接 Phoenix
/opt/module/phoenix/bin/sqlline.py hadoop100,hadoop101,hadoop102:2181
创建索引
CREATE INDEX my_index ON student(age);
创建包含索引
CREATE INDEX my_index ON student(age) include (addr);
本地索引
CREATE LOCAL INDEX my_index ON student(age,addr);
可以看到如下多了索引表
删除索引
drop index my_index on student;
查看二级索引是否有效
explain select id from student where age = 10;
有索引,explain结果显示索引扫描
无索引,explain结果显示全局扫描