Phoenix的执行计划 explain 详情

官网关于explain的链接: http://phoenix.apache.org/explainplan.html

1. 简介
简单来说, 就是通过在SQL前面加上 explain命令, 来查看这个SQL准备要做些什么。

两个重点:1,SQL最好走索引或者主键  2,避免全表扫描

命令示意:

正常SQL:
select a from my_table;
 
查看执行计划SQL:
explain select a from my_table;
 

2. 执行计划会告诉我们什么?

  • 将要扫描的CHUNK数量
  • 客户端并发线程数量
  • 执行模式(并行或串行)
  • 查询过滤字段或者扫描范围
  • 将会查询的hbase表名
  • 估算扫描数据bytes大小和数据量大小(依赖stats信息)
  • 估算扫描的行数
  • 估算数量bytes大小和数据量时间
  • 操作符被执行在客户端或者服务端
  • 在客户端与服务端分别执行了哪些操作(排序,合并,扫描,limit限制)

 

3. 性能良好的执行计划应该满足以下条件:

1. 除了必要的客户端操作外, 大多数操作应该尽可能的都在服务端, 因为服务端是一个集群, 处理速度快, 而客户端只是一个单独的机器.

2. 尽可能使用RANGE SCAN或SKIP SCAN而不是TABLE SCAN, 也就是最好不要出现全表扫描。尽量避免出现FULL SCAN,尤其对于不走索引表的单表查询,不应该出现FULL SCAN

3. 查询SQL中, where条件最好是包含所有的主键, 最次也要包含前几个,  前几个不能省略, 否则会大大的降低性能, 出现全表扫描的情况.

4. 最好使用索引查询, 索引可以明显的提升查询速度

5. 如果你的SQL包含了索引字段, 但是Phoenix协处理器并没有在执行SQL的时候使用索引, 可以强制指定索引, 语法为: 

 SELECT /*+ INDEX(my_table my_index) */ v2 FROM my_table WHERE v1 =

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值