首页
学习
活动
专区
圈层
工具
发布

StarRocks 查询探秘(六):从 EXPLAIN SQL 看执行计划的构建与优化

本文将从 EXPLAIN 命令入手,深入剖析 StarRocks 如何生成和优化执行计划,并结合实际案例,通过执行计划优化业务 SQL,把一个线上十几分钟耗时的 SQL 优化到3分钟内。...定义数据的分区方式 dataPartition 和 outputPartition,决定数据如何在节点间分发。...FROM table_B WHERE dt='$date' AND hour='${hour}' ) b WHERE instr(b.query, a.word...) > 0;一开始怀疑是不是两表进行 shuffle join 导致的性能差,通过 Explain Verbose 查看,发现是 instr(b.query, a.word) 这个非等值条件导致使用 NESTLOOP...PlanFragment 的调度》中,深入分析 StarRocks 调度器 Coordinator 是如何进行 PlanFragment 的调度分发,并以线上SQL Scan 数据不均衡导致的耗时长,

42210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SqlAlchemy 2.0 中文文档(七十三)

    ,在 Python 3 中以及使用现代测试工具如 Pytest 时,现在在标准错误流中更加明确。...ORDER BY venue_1.name ('/', 1, 'parent1') 该功能预计将有助于处理诸如在关系连接条件中使用几何函数,或者任何在 SQL 连接的 ON 子句中以 SQL 函数的形式表达的情况等情况...,在 Python 3 中以及使用现代测试工具如 Pytest 时,现在在标准错误流中更加明确。...现在可以将比较两个元素的 SQL 函数用作适用于 ORM relationship()中的“比较”对象,首先使用func工厂通常创建该函数,然后当函数完成时调用FunctionElement.as_comparison...#3850 增加对 SQLite 约束中 ON CONFLICT 的支持 SQLite 支持一个非标准的 ON CONFLICT 子句,可以为独立约束以及一些列内约束(如 NOT NULL)指定。

    1.5K10

    0464-如何离线分析HDFS的FsImage查找集群小文件

    在前面的文章Fayson介绍了《如何在Hadoop中处理小文件》,《如何使用Impala合并小文件》和《如何在Hadoop中处理小文件-续》。...5.执行base.sql文件创建分析的Impala表 ? 6.执行analyse_sql/all_hdfs.sql语句通过各个维度查找小文件 ? 离线分析脚本目录结构如下: ?...config-env.sh:脚本主要用户配置集群信息(如:ImpalaDaemon访问地址、存储的表名、临时文件存放目录等) [root@cdh02 fsimage]# more config-env.sh...offline_analyse.sh:脚本用于执行analyse_sql目录的SQL语句 [root@cdh02 fsimage]# more offline_analyse.sh #!...统计中有两个重要参数parent_id和instr(path,'/',1,2)这两个参数主要表示指定统计的HDFS目录以及目录钻取深度,instr()函数中的最后一个参数即为目录钻取深度(如果为parent_id

    4.2K51

    MyBatis 与 Spring Data JPA 核心对比:选型指南与最佳实践

    ,可针对每条 SQL 优化间接依赖 ORM,需理解生成 SQL 及缓存机制适用场景复杂报表、遗留系统、高并发读写快速原型、DDD 项目、标准 CRUD 系统 一句话总结: MyBatis = SQL...如分页查询时,会先执行 count 查询,再执行 limit,可能拖慢性能。2.3. 缓存机制MyBatis:一级缓存(Session 级别)默认开启,二级缓存需手动配置,适合分布式环境。...选择 MyBatis 的 5 大场景复杂 SQL 查询:如多表联查、窗口函数、递归查询、报表统计。遗留系统或非规范数据库:表结构混乱、字段命名不规范、无外键约束。...标准管理系统:如 CMS、ERP、CRM 等以 CRUD 为主的系统。3....框架适合谁不适合谁MyBatisSQL 工程师、复杂系统、高性能场景追求快速开发、不熟悉 SQL 的团队Spring Data JPADDD 实践者、快速开发、标准业务系统需要复杂 SQL 优化、遗留数据库对接

    45610

    Oracle-函数大全

    在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:    单行函数    组函数   本文将讨论如何利用单行函数以及使用规则。   ...SQL中的单行函数   SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。...参数时能够返回非NULL值。...码,他的逆函数是CHR() SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122   CHR(<i>)[NCHAR_CS...6.第六讲 SQL中的组函数 SQL中的组函数   组函数也叫集合函数,返回基于多个行的单一结果,行的准确数量无法确定,除非查询被执行并且所有的结果都被包含在内。

    3.1K50

    利用Oracle dbms_pipe实现存储过程之间的通信

    如果输入标准分隔符的字符串,则解析该字符串作为需要生成的商品ID,为其生成代码,否则为商品表中所有商品ID生成代码 3....代码的每一位要符合相应的规则,例如第一位的规则是[0123],则这位只能是0、1、2、3中的一个数 4. 由于可能一次生成大量的代码,这个过程需要较长时间,所以需要用进度条提示生成进度 5....可以在生成过程执行中终止过程 6. 返回需要生成的代码个数和实际生成的代码个数 7. 每次提交的个数可以通过参数定义,例如共要生成10万的代码,每次提交1000个 设计思路: 1....用一个函数返回当前已经生成的代码个数,供显示进度条的外部程序调用,生成代码过程与该函数用dbms_pipe进行通信 4....p_p7 IN VARCHAR2, -- 第七位规则字符串,如012345 p_instr

    84510

    MySQL 存储过程运行的内存管理

    一、讲解例子 二、function内存管理过程讲解 三、function内存管理过程图例 四、总结 一、讲解例子 MySQL的存储过程在运行过程中的内存管理跟table等运行时候是不一样的,它涉及多层内存管理.../sql_base.cc:9244 #4 0x0000555558f9d023 in Query_block::prepare (this=0x7fff400fadc8, thd=0x7fff40001060...的内存管理 执行function的内存管理相关代码,sp_head::execute_function函数: 1、在sp_head::execute_function有如下代码用来创建运行内存: thd...2、接着是每个instr步骤的内存管理: thd->swap_query_arena(call_arena, &backup_arena); 内存切换到call_arena err_status = execute...(&execute_mem_root, MYF(0)); }while 每个步骤的内存块都在execute_arena上,每个sp_instr都是单独管理内存,该sp_instr执行完毕立即释放内存

    2K40

    SQL函数 INSTR

    SQL函数 INSTR 返回子字符串在字符串中的位置的字符串函数,具有可选的搜索起始点和出现次数。...它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHAR或VARCHAR2)。 substring - 一个子字符串,被认为出现在字符串中。...起始值为0、空字符串、NULL或非数字值会导致INSTR返回0。 指定start为负数会导致INSTR返回。...occurrence - 可选-一个非零整数,指定从起始位置搜索时返回哪个子字符串。 默认情况是返回第一个出现的位置。 INSTR返回INTEGER数据类型。...这个函数也可以通过调用INSTR()方法从ObjectScript调用: DHC-APP> w $SYSTEM.SQL.INSTR("The broken brown briefcase","br",6,2

    2.9K00

    教你编写高性能的mysql语法

    可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需要注意,这个函数是不能作用在索引列上。...Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。...NOT 我们在查询时经常在where子句使用一些逻辑表达式,如大于、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。...Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。...Schema设计时主要考虑:标准化,数据类型,索引。 2.1.1 标准化 标准化是在数据库中组织数据的过程。

    1.1K10

    PG几个有趣的插件和工具介绍

    字符串函数 Item Overview INSTR 返回子字符串在字符串中的位置 LENGTH 以字符数为单位返回字符串的长度 LENGTHB 以字节数为单位返回字符串的长度 LPAD 用字符序列左填充字符串到指定长度...pg_top Current Query “Q”键并输入PID可以查看当前执行的SQL。...pg_top Query Plan “E”键(EXPLAIN)或A键(EXPLAIN ANALYZE),然后再输入具体的PID,可以查看进程当前运行SQL的执行计划。...通过系统视图或扩展视图(如pg_stat_activity或pg_stat_statements)来辅助分析函数和存过中的性能问题也是有所局限。...报表以火焰图形式展示函数调用堆栈、耗时占比,还可以查看函数中每个SQL的位置、执行次数、最长执行时间、总时间等。 创建扩展后,使用plprofiler调用函数,从后端收集本地数据来创建HTML报告。

    1.8K30

    LLM辅助的从Postgres到SQLite和DuckDB的翻译

    实际上,有两个层面存在需要解决的差异:HCL 和 SQL。Powerpipe 使用 HCL 定义小组件(包括图表、表格、信息卡和选择列表),并使用 SQL 将数据传输到这些小组件中。...SQL 查询,query.mentions。...ChatGPT 和 Claude 独立提出的解决方案是,在 HCL 层将列表转换为逗号分隔的字符串,然后在 SQL 层中以不同的方式展开它。以下是 HCL 部分。...一如既往,我依赖于两个 指导原则:永远不要信任,始终验证 和 比较 LLM 的输出。但这仍然有点费力。 回想起来,这种困难本不应该令人惊讶。...我们在此讨论的仪表板提供了相对流行度的非正式衡量标准。以下是黑客新闻标题中最近提到的三个数据库的计数。

    1.3K10

    php结合redis实现高并发下的抢购、秒杀功能的实例

    ih_store数据中goods_id='$goods_id' and sku_id='$sku_id' 的数据被锁住(注3),其它事务必须等待此次事务 提交后才能执行 $rs=mysql_query(...and sku_id='$sku_id' FOR UPDATE";//此时这条记录被锁住,其它事务必须等待此次事务提交后才能执行 $rs=mysql_query($sql,$conn); $row=mysql_fetch_assoc...> 复制代码 **优化方案3:**使用非阻塞的文件排他锁 <?php $conn=mysql_connect("localhost","root","123456"); if(!...,推荐使用(mysql事务在高并发下性能下降很厉害,文件锁的方式也是) 先将商品库存如队列 big/index.php 上述只是简单模拟高并发下的抢购,真实场景要比这复杂很多,很多注意的地方 如抢购页面做成静态的,通过ajax调用接口 再如上面的会导致一个用户抢多个

    1.6K20

    利用MySQL系统数据库做性能负载诊断

    ,死锁,阻塞,历史上执行异常的SQL(好比生活品质细节) MySQL的performance_data库和sys库提供了非常丰富的系统日志数据,可以帮助我们更好地了解非常细节的,这里简单地列举出来了一些常用的数据...ORDER BY total_read_written DESC; ps:个人不太喜欢MySQL自定义的format_***函数,这个函数的初衷是好的,把一些数据(时间,存储空间)等格式化成更加可读的模式...比如想把时间统一格式化成秒,对不起,不支持,某些个数据不仅仅是看一眼那么简单,甚至是要读出来存档分析的,因此这里不建议也不会使用那些个format函数 TOP SQL 统计 可以按照执行时间,阻塞时间,...执行失败的SQL 统计 一直以为系统不会记录执行失败的\解析错误的SQL,比如想统计因为超时而执行失败的语句,后面才发现,这些信息,MySQL会完整地记录下来 这里会详细记录执行错误的语句,包括最终执行失败...这些事件的等待事件,不一定都是负面性的,比如事物的锁等待,是在并发执行过程中必然会生成的,这个等待事件的统计结果,也是累计的,单纯的看一个直接的值,不具备任何参考意义。

    2.6K20

    视图索引

    标准视图的结果集不是永久地存储在数据库中。...对于标准视图而言,为每个引用视图的查询动态生成结果集的开销很大,特别是对于那些涉及对大量行进行复杂处理(如聚合大量数据或联接许多行)的视图更为可观。...若经常在查询中引用这类视图,可通过在视图上创建唯一聚集索引来提高性能。在视图上创建唯一聚集索引时将执行该视图,并且结果集在数据库中的存储方式与带聚集索引的表的存储方式相同。...有关更多信息,请参见确定性函数和非确定性函数。...若除去聚集索引,视图上的所有非聚集索引也将被除去。可分别除去非聚集索引。除去视图上的聚集索引将删除存储的结果集,并且优化器将重新象处理标准视图那样处理视图。

    1.8K30
    领券