首页 > 其他分享 >KingbaseES 执行计划常见节点介绍

KingbaseES 执行计划常见节点介绍

时间:2024-03-28 15:47:50浏览次数:23  
标签:explain 常见 扫描 查询 索引 cost 执行 KingbaseES 节点

KingbaseES中explain命令来查看执行计划时最常用的方式。其命令格式如下:

explain [option] statement

其中option为可选项,常用的是以下5种情况的组合:

  • analyze:执行SQL并且显示实际的运行时间和其他统计信息,默认FALSE。注意:加了analyze会真正执行SQL语句
  • verbose:显示附加信息,比如计划树中每个节点输出的字段名等,默认FALSE
  • costs: 包括每个计划节点的启动成本预估和总成本的消耗,也包括行数和行宽度的预估,默认TRUE。
  • buffers:使用信息,特别包括共享块命中、读、脏和写的次数,本地块命中、读、脏和写,临时块读和写的次数。默认FALSE,前置条件是analyze
  • format:声明输出格式,可以为TEXT、XML、JSON 或 YAML,默认 TEXT

explain输出

explain select * from student where sname='ada';

QUERY PLAN
------------------------------------------------------------------------
Index Scan using idx_stu on student (cost=0.14..8.15 rows=1 width=10)
    Index Cond: (sname = 'ada'::text)
(2 行记录)

cost:这是查询执行的总代价。代价是通过估计查询执行所需的资源和时间来计算的,代价越低表示查询执行越高效。
以点点“..”分为2个部分数字,第一个数字表示启动的成本,也就是返回第一行需要多少cost值;第二个数字表示返回所有的数据的成本。

0.14: 这是查询执行的启始代价,也就是开始执行查询时的代价估计。
8.15: 这是查询执行的总代价,表示执行整个查询所需的估计代价。

默认 cost 值如下:

  • 顺序扫描一个数据块,cost值定为1,参数为seq_page_cost
  • 随机扫描一个数据块,cost值定为4,参数为random_page_cost
  • 处理一个数据行的CPU,cost为0.01,参数为cpu_tuple_cost
  • 处理一个索引行的CPU,cost为0.005,参数为cpu_index_tuple_cost
  • 每个操作符的 CPU 代价为 0.0025,参数为cpu_operator_cost rows
  • rows:表示预估返回多少行
  • width:表示每行平均宽度为多少字节。本例中,每一行的宽度是10字节

常见的执行计划节点

  • Seq Scan:全表扫描,当数据表中没有索引,或者满足条件的数据集较大,索引扫描的成本高于全表扫描,这时规划器会选择使用全表扫描。
  • Index Scan:索引扫描,查询列有索引,则直接扫描索引,不再进行全表扫描,耗费时间小于全表扫描。
  • Index Only Scan:全索引扫描,当查询的条件都在索引中,也会走该扫描方式,不会读取表文件。
  • Bitmap Index Scan:位图索引扫描,也是一种走索引的方式,方法是扫描索引,把满足条件的行或者块在内存中建一个位图,扫描完索引后,再跟进位图中记录的指针到表的数据文件读取相应的数据。
    在or、and、in子句和有多个条件都可以同时走不同的索引时,都可能走Bitmap Index Scan。
  • Filter:条件过滤
  • Nestloop Join:嵌套循环连接,是在两个表做连接时,从一张表中读取数据(驱动表outer table),然后访问另一张表(被查找表 inner table,通常有索引)。驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。
  • Hash Join :散列连接,是优化器做大数据集连接时的常用方式,优化器使用两个表中较小的表(通常是小一点的那个表或数据源)利用连接键(JOIN KEY)在内存中建立散列表,将列数据存储到hash列表中,然后扫描较大的表,
    同样对JOIN KEY进行HASH后探测散列表,找出与散列表匹配的行。需要注意的是:如果HASH表太大,无法一次构造在内存中,则分成若干个部分,写入磁盘的临时文件,会多一个写的代价,降低效率。
  • Merge Join:排序合并连接,是先将关联表的关联列各自做排序,然后从各自的排序表中抽取数据,到另一个排序表中做匹配。

对于某些DML语句,如果即想运行explain analyze命令,又不想影响实际的数据,则可以把该命令放入一个事务里,执行完后回滚事务。

begin;
explain analyze update student set ssex=false where sname='ada';
rollback;

标签:explain,常见,扫描,查询,索引,cost,执行,KingbaseES,节点
From: https://www.cnblogs.com/kingbase/p/17931012.html

相关文章

  • KingbaseES 通过触发器实现查看表的创建时间
    从oracle迁移至KingbaseES的用户,经常会问在KingbaseES中怎么查询表的创建时间。由于KingbaseES本身并不直接存储表的创建时间,所以获取这一信息通常需要依赖于间接方法或日志记录。如果确实有这种需求,可以通过创建事件触发器的将相关的信息保存下来。建立保存信息的数据表CREAT......
  • KingbaseES查找慢查询语句和阻塞会话
    在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤。数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈。当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执行时间过长的查询,这些查询通常被称为“慢查询”。同时,阻塞会话即那......
  • KingbaseES自动生成列介绍
    在KingbaseES中createtable语句支持GENERATEDcolumn(生成列)。生成列是一种特别的列类型,它的值基于其他列的值计算得出。因此,生成列之于列,有点像视图之于表的关系。存在两种类型的生成列:存储生成列和虚拟生成列。存储生成列在数据被写入(插入或更新操作)时进行计算,并且像常规列......
  • KingbaseES LWLock buffer_mapping 等待
    在KingbaseES数据库中,会话在将数据块与共享缓冲池的缓冲区相关联时,会触发“LWLockbuffer_mapping”等待事件。这类事件涉及到一种轻量级锁(lwlock),类似于Oracle中的闩锁。这个锁在不同的数据库中可能有不同的名称,但通常被称为buffer_mapping或BufMappingLock。它主要用于实现对HAS......
  • KingbaseES V8R6集群运维案例之---主备failover切换原因分析
    案例说明:生产环境,KingbaseESV8R6的集群发生failover切换,分析集群切换的原因。适用版本:KingbaseESV8R6集群架构:137.xx.xx.67主原备库137.xx.xx.94原主库137.xx.xx.68vip地址一、日志分析1、分析原备库hamgr.log如下所示,通过原备库hamgr.log日志获取到具体......
  • KingbaseES V8R6数据库运维案例之---用户权限导致的备份恢复故障
    案例说明:由于限制了用户对数据库的访问,导致在执行‘sys_backup.shinit’初始化物理备份时,执行失败。适用版本:KingbaseESV8R6一、问题现象如下所示,执行‘sys_backup.shinit’初始化物理备份:1、执行初始化失败[kingbase@node201bin]$shsys_backup.shinitERROR:Con......
  • 在Vue项目中使用Vuex进行状态管理是一种常见做法。下面是一个简单的示例,展示了如何创
    步骤1:创建VuexStore首先,你需要创建一个Vuexstore。通常,这是在你的项目的store目录下完成的。//store.jsimportVuefrom'vue';importVuexfrom'vuex';Vue.use(Vuex);conststore=newVuex.Store({state:{count:0},mutations:{increment(......
  • Centos7.9 部署mongodb高可用集群 3节点
    一、部署准备1.三台节点准备192.168.145.172192.168.145.173192.168.145.1742.官网地址:社区版传送门3.选择对应的版本并下载4.创建用于存放数据、日志文件和配置文件的文件夹mkdir-p/data/mongodbmkdir/var/log/mongodbmkdir/etc/mongodb5.解压安装包,配置环境......
  • 解决 App 自动化测试的常见痛点
    App自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题:一是App启动加载时间较久(可能App本身加载慢,可能移动设备本身加载应用速度慢,也可能首页......
  • 面试常见的技术场景
    常见技术场景单点登录如何实现权限认证如何实现上传数据的安全性如何控制负责项目遇到了哪些棘手的问题如何进行压测日志怎么采集查看日志的命令怎么快速定位系统的瓶颈生产问题怎么排查......