GBase 8s 执行计划查询分析

GBase 8s的执行计划时帮助调优的最有用的工具之一,从中可以看出 SQL 是如何执行的,可以看到访问方法(全表扫描或索引),看到并行(并行读,顺序读)是否跳过分片,看到表的访问顺序,看到表的连接方式(hash,nested loop,sort merge),采用哈希连接时,哪张表用来生成哈希桶中的值,哪张表是被观察的(probe),可以画出查询树。

SET EXPLAIN ON AVOID_EXECUTE

在执行 SQL 语句之前,通过 set explain on语句、set explain on avoid_execute语句、explain 指示器中的任何一种方法可以获得 SQL 语句的执行计划。set explain on 和 set explain on avoid_execute 的区别是:前者执行之后,后面的 SQL 语句会真执行;而后一种方式,后面的 SQL 语句不会执行,在UNIX平台上只会把执行计划写到当前目录的申请sqexplain.out文件。

嵌套循环连接

在嵌套循环连接中,数据库服务器会扫描第一张表,也称做 outer table,如何第一张表上有过滤条件,满足条件的每一条记录都会去和第二张表连接,第二张表也称为inner table。outer table可能通过索引去访问,也可能进行全表扫描,由于有潜在的可能 inner table 会被读很多次。通常数据库会通过索引去访问 inner table,如果inner table 没有索引,SQL在执行是,优化器会判断在SQL执行时是否需要自动创建一个索引。当优化器判断出创建一个索引的开销比通过 outer table 中满足条件的行去和 inner table 做表连接的开销要小时,才会自动创建索引。

哈希连接

当两张表做连接时,其中一张或两张表上连接的字段上可能没有索引,或者其中有一张表需要读大量的数据。
哈希连接一般由两部工作组成,第一部分是根据过滤条件排除掉不需要的记录行,然后创建哈希表。第二部分是观察(probe)哈希表。
在创建哈希表阶段,优化器通过 update statistics mediun(或high)和其他的开销统计信息决定两张表中哪个表的相关记录数较小,或者它构建一张小的表;在这张表上创建哈希表。
哈希表本身很像一组桶,哈希函数的输入参数称做key,根据哈希函数的返回值来决定将列值放入哪个桶中,哪些返回值相同的列值将被放在桶一个哈希桶中。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值