执行计划算子 算子介绍 SQL执行计划中每一个步骤为一个数据库运算符,也叫做一个执行算子。DataArtsFabric SQL中算子是基本的数据处理单元,合理地组合算子、优化算子的顺序和执行方式,可以提升数据的处理效率。 DataArtsFabric SQL算子可分为:扫描算子、控制算子
Iceberg简介 Iceberg是一个面向海量数据分析的开放表格式,是元数据和数据文件的一种组织方式,处于计算引擎和存储系统之间,旨在提供一种可扩展且可靠的方式来管理海量的数据表格。Iceberg的设计目标是提供一个可扩展、高性能、易于使用的表格管理解决方案,以满足现代分布式数据处理的需要
ICEBERG表服务函数 iceberg_expire_snapshots 描述:Iceberg每个commit都会生成一个新快照,同时保留旧数据和元数据,以便进行快照隔离和time travel。expire snapshots可以用来清理不再需要的旧快照以及仅被不需要快照包含的数据文件
SQL执行计划 SQL执行计划是一个节点树,显示DataArtsFabric SQL执行一条SQL语句时执行的详细步骤。 使用EXPLAIN命令可以查看优化器为每个查询生成的具体执行计划。EXPLAIN给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。
概述 背景信息 在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。DataArtsFabric SQL提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因而,DataArtsFabric SQL中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式
优化器方法配置 这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是最优的,可以通过使用这些配置参数强制优化器选择一个不同的规划来临时解决这个问题。更好的方法包括调节优化器开销常量、手动运行ANALYZE、增加配置参数default_statistics_target
EXPLAIN 功能描述 显示SQL语句的执行计划。 执行计划将显示SQL语句所引用的表采用的扫描方式。如果引用了多个表,执行计划还会显示使用的JOIN算法。 执行计划中最关键的部分是语句的预计执行开销,即计划生成器对执行该语句所需时间的预估。 如果指定了ANALYZE选项,则该语句会被执行
PG_PROC PG_PROC系统表存储所有内置函数的信息。 表1 PG_PROC字段 名称 类型 描述 proname name 函数名。 pronamespace oid 此函数所在命名空间的OID。 proowner oid 函数的所有者。 prolang oid 实现语言或函数的调用接口
ANALYZE | ANALYSE 功能描述 用于收集有关数据库中表内容的统计信息,统计结果存储在LakeFormation上。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 能够执行ANALYZE特定表的用户,包括表的所有者、被授予该表上读取权限的用户。 注意事项 ANALYZE
PGXC_GROUP PGXC_GROUP系统表存储节点组信息,在存算分离3.0版本中,每个逻辑集群节点组称为一个VW(Virtual Warehouse),而在存储KV层,每一个VW会和一个vgroup相对应。 表1 PGXC_GROUP字段 名称 类型 描述 group_name
窗口函数 普通的聚集函数只能用来计算一行内的结果,或者把所有行聚集成一行结果。而窗口函数可以跨行计算,并且把结果填到每一行中。 通过查询筛选出的行的某些部分,窗口调用函数实现了类似于聚集函数的功能,所以聚集函数也可以作为窗口函数使用。 窗口函数可以扫描所有的行,并同时将原始数据和聚集分析结果同时显示出来
Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。 Hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain
CREATE FUNCTION 功能描述 创建一个自定义函数。 语法格式 创建自定义函数语法。 1 2 3 4 5 6 7 8 9 10 11 12 CREATE FUNCTION function_name ( [ { argname argtype
操作符 操作符类型解析 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。 寻找最优匹配。 丢弃输入类型不匹配以及无法隐式转换成匹配的候选操作符
SQL语句改写规则 根据数据库的SQL执行机制以及大量的实践,总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。如果遵守下列规则,能够大幅度提升业务查询效率。 使用union all代替union union在合并两个集合时会执行去重操作,而union
SQL执行监控 SQL监控数据详解 SQL监控数据中记录了查询作业的各项资源使用情况(包括内存、下盘、CN和DN时长、OBS访问时间、LakeFormation访问时间等)以及SQL执行计划信息(EXPLAIN/EXPLAIN PERFORMANCE)。 SQL监控数据对外展示的字段如下
SMP并行执行 在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。 通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、网络、I/O等等。本质上SMP是一种以资源换取时间的方式
Scalar Python UDF注册参数 注册Scalar Python UDF的作用是将一个原始的Python函数注册进数据库中。 不管是显式注册还是隐式注册,对于注册Python类型的Scalar UDF,目前都接受用户传入以下参数: 表1 Scalar Python UDF
语句行为 介绍SQL语句执行过程的相关默认参数。 search_path 参数说明:当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。它的值由一个或多个模式名构成,不同的模式名用逗号隔开。 当前会话存放临时表的模式时,可以使用别名pg_temp将它列在搜索路径中,如'pg_temp
表分区定义 分区表就是把逻辑上的一张表根据分区策略分成几张物理块库进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。当进行条件查询时,系统只会扫描满足条件的分区,避免全表扫描,从而提升查询性能。 分区表的优势: 改善查询性能