当前位置:网站首页>GBase 8s 执行计划查询分析
GBase 8s 执行计划查询分析
2022-08-11 05:21:00 【蜻蜓队镸】
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,根据哈希函数的返回值来决定将列值放入哪个桶中,哪些返回值相同的列值将被放在桶一个哈希桶中。
边栏推荐
猜你喜欢
随机推荐
【记录】innerHeight?clientHeight?offsetHeight?scrollTop?screenTop?.....一堆高度傻傻分不清
组件间通信
写博客周志
LeetCode43. String multiplication (this method can be used to multiply large numbers)
LVS负载群集--DR模式
07-nodemon安装和使用
C语言版通讯录——动态存储(进阶版)
bootstarp作业一:制作分页器
Chapter 4-2 a complex type (pointer)
正则表达式与绕过案例
《现代密码学》学习笔记——第五章 密钥分配与密钥管理
《现代密码学》学习笔记——第三章 分组密码
PHP提高并发能力有哪些方案
Redis客户端管理神器RedisInsight 推荐
mysql 间隙锁(GAP-LOCK)演示
在项目中使用flex布局的justify-content:space-around;遇到的问题,(数量为单数)
05-Nodejs中的模块加载机制
vscode插件
解读String的intern()
C语言自定义类型——枚举类型讲解