phoenix:Explain

本文深入探讨HBase查询优化策略,包括如何利用RANGE SCAN和SKIP SCAN提高效率,以及通过Explain分析查询计划,减少客户端操作,实现查询在服务端执行,提升并行处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Explain

1.执行所有的 Hbase 范围查询 
2.估算scan的字节数
3.估算传输的row数
4.以上估算时间
5.需要扫描的表
6.在服务与客户端的操作如:sort merge scan limit

EXPLAIN sql -- 打印执行计划,修改语句使满足如下条件:
	1.尽量让操作在server端。服务端的操作是分布在集群上的,并行操作。
	2.尽可能使用RANGE SCAN or SKIP SCAN,比起 TABLE SCAN
	3.过滤条件采用主键。
	4.如果必要,引入本地索引或者 全局索引那个转换你的查询
	5.如果有一个索引能覆盖你的查询,但是被删除了,用 SELECT /* + INDEX() */

Anatomy of Explain Plan
	1.AGGREGATE INTO ORDERED DISTINCT ROWS -- 把返回的结果进行聚合,如求和。如果出现ORDERED,GROUP BY 应用到了PK上,它允许在合适的地方进行聚合操作,而不是保存所有的 distinct组在服务器的内存里
	2.AGGREGATE INTO SINGLE ROW -- 把所有结果聚合成一行,如 count(*) 	
	3.CLIENT -- 操作在client端进行。如果出现这种情况,可能需要重新写SQL,尽可能多的操作在服务端
	4.FILTER BY  expression -- 返回的匹配expression的结果
	5.FULL SCAN OVER tableName -- 全表扫描
	6.INNER-JOIN -- 多个表进行连接,如果连接条件满足
	7.MERGR SORT --  对结果进行合并排序
	8.RANGE SCAN OVER tableName [...] -- [start stop] 指示primary key 开始与结束位置
	9.ROUND ROBIN -- 如果返回结果不需要 order by ,返回的结果是无序的,在客户端启动最大的并行度
	10.X-CHUNK -- 描述有多少线程应该在这个操作上。最大的并行是被线程池限制的。最小的线程数与扫描的table的数据所有的regions数相同
	11.PARALLELx-WAY -- 有多少个并行扫描合并排序在操作中
	12.SERIAL -- 连续操作,如 一行的查找 过滤条件是 PK ,并且结果是被限制的
	13.EST_BYTES_READ -- 估算总共有多少个字节作为扫描的查询的部分
	14.EST_ROW_READ --  估算总共有多少行作为扫描查询的部分 
	15.EST_INFO_TS -- 收集信息需要多少毫秒

JDBC Explain Plan API and estimates information

String explainSql = "EXPLAIN SELECT * FROM T";
Long estimatedBytes = null;
Long estimatedRows = null;
Long estimateInfoTs = null;
try (Statement statement = conn.createStatement(explainSql)) {
        int paramIdx = 1;
        ResultSet rs = statement.executeQuery(explainSql);
        rs.next();
        estimatedBytes =
                (Long) rs.getObject(PhoenixRuntime.EXPLAIN_PLAN_ESTIMATED_BYTES_READ_COLUMN);
        estimatedRows =
                (Long) rs.getObject(PhoenixRuntime.EXPLAIN_PLAN_ESTIMATED_ROWS_READ_COLUMN);
        estimateInfoTs =
                (Long) rs.getObject(PhoenixRuntime.EXPLAIN_PLAN_ESTIMATE_INFO_TS_COLUMN);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值