当前位置:网站首页>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,根据哈希函数的返回值来决定将列值放入哪个桶中,哪些返回值相同的列值将被放在桶一个哈希桶中。
边栏推荐
- JS继承的几种方式及优缺点
- [C language advanced] The first in-depth analysis of the storage of integer data in memory (1)
- 组件间通信
- 如何正确使用OPcache优化系统性能
- 《现代密码学》学习笔记——第三章 分组密码 [三]分组密码的运行模式
- Error in render: “TypeError: Cannot read properties of undefined (reading ‘kingKongList‘)“
- Markdown学习
- uniapp中设置tabBar及其窗口标题
- gradle-wrapper.jar description
- Chapter 4-2 a complex type (pointer)
猜你喜欢
随机推荐
DNS外带注入SQLMAP
mysql基本概念之事务
IDEA本机连接远程TDengine不成功,终于配置成功
若依分离版—增加通知公告预览功能
vscode插件
mysq基础语句+高级操作(学这篇就够了)
js严格模式
【记录】innerHeight?clientHeight?offsetHeight?scrollTop?screenTop?.....一堆高度傻傻分不清
Hooks在函数组件中使用useState、useEffect、useRef、useContext
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
Chapter 13 Class Inheritance-1
【记录】TypeScript
为什么购买的磁盘实际空间比标注的空间少
设计三级联动
数组的相关方法及使用
Nodered系列—使用mqtt写入国产数据库tDengine
mysql基本概念之存储引擎
《现代密码学》学习笔记——第四章 公钥密码
Markdown学习
Mobx--store状态管理工具