Phoenix 学习笔记

简介

Phoenix支持SQL标准语法的绝大部分特性,包括:标准类型;聚合,连接,in,排序以及子查询等查询语法;create,drop,delete等数据操作语法,这些操作在底层都会转变为HBase API。

1、HBase的列簇,可以把相关的列放到一起,以减少IO,优化读性能,在创建Phoenix表的时候直接写成”cf.col”即可,Phoenix会自动创建cf列簇,如果不指定,则放在默认列簇中;
2、Phoenix将insert和update合并成upsert关键字,来对应HBase的Put概念;
3、HBase为了避免在表初始时只有一个Region带来数据热点,支持预分区,Phoenix支持在建表的时候通过split on关键字来表达。
4、HBase支持动态列的特性在Phoenix中也得以保留,存入数据的时候直接声明新的字段即可使用。

常用调优点

0、如果某些列的访问频率比其他列高,则创建多个列族来将经常访问的列与很少访问的列分开。这提高了性能,因为HBase只读取查询中指定的列族。
1、由于I/O成本的原因,将VARCHAR列保持在1MB以下。在处理查询时,HBase在将单元格发送给客户机之前将它们全部物化,客户机在将它们传递给应用程序代码之前将它们全部接收。
2、对于结构化对象,不要使用JSON,它不是很紧凑。使用protobuf、Avro、msgpack或BSON等格式。
3、考虑在存储前使用快速LZ变体压缩数据,以减少延迟和I/O成本。
4、使用列映射特性(在Phoenix 4.10中添加),它为非pk列(PRIMARY KEY)使用数值HBase列限定符,而不是直接使用列名。当在HBase返回的已排序单元格列表中查找单元格时,这会提高性能,通过减少表使用的磁盘大小进一步提高全面性能,并加速诸如列重命名和元数据级列删除之类的DDL操作。有关更多信息,请参见Apache Phoenix博客上的列映射和不可变数据编码。

索引

Phoenix索引是一个物理表,它在主表中存储部分或所有数据的旋转副本,以服务于特定类型的查询。当您发出查询时,Phoenix会自动为查询选择最佳索引。主索引是根据您选择的主键自动创建的。您可以创建辅助索引(二级索引),指定那些可能要查询的列。

二级索引:
二级索引以存储空间和写入速度为代价,提高读取性能。二级索引可以在表创建之后添加或删除,并且不需要对现有查询进行更改。少量的二级索引通常就足够了。根据需要,可以考虑创建覆盖索引或函数索引,或者两者都创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值