首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Apache Doris 聚合函数源码阅读与解析|源码解读系列

    基于聚合函数可以实现对大量数据的汇总计算,以更简洁的形式呈现数据并支持数据可视化。...By 包含非分桶列,同一个分组中的数据可能分布在多个 BE 上;三阶段聚合:Count Distinct 包含 Group By(即 2 个两阶段聚合的组合);四阶段聚合:Count Distinct...;将聚合后的结果按照 distinct 字段进行重分区,然后对新的分区按照 distinct 字段进行分组聚合;将 count distinct 转换为 count,对新的分区进行聚合;对各分区的结果进行汇总聚合...为此,Apache Doris 支持为此聚合阶段启用流式预聚合,在此模式下如果 Aggregate Pipeline 发现聚合操作产生的行数减少效果不及预期,则不再对新的 Block 进行聚合而是将其转换后放到队列中...,函数的创建通过 factory.register_function_both 实现,相关的改动可以在 aggregate_function_map.cc 中 grep register_aggregate_function_map_agg

    74811

    MySQL源码解析之执行计划

    在MySQL-8.0.22版本之后,又引入访问方式AccessPath和执行迭代器Iterator对象,再结合JOIN和QEP_TAB对象,最终得到整个解析计划的执行路径。...(error = 1); /* purecov: inspected */ ... // 执行计划细化,优化子查询和半连接的情况,具体策略可以参考mariadb的文档: // https://...mariadb.com/kb/en/optimization-strategies/ // 关键代码是setup_semijoin_dups_elimination,主要对半连接关联的策略进行装配...MySQL支持的搜索策略有穷举搜索、贪婪搜索,对应的Join优化器有左深树算法和超图算法,整个优化过程主要是基于CBO策略进行优化。 执行计划运行的过程,实际上就是一个动态规划的过程。...---- 关于 GreatSQL GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

    62530

    sparksql源码系列 | 一文搞懂with one count distinct 执行原理

    with one count distinct,如果你正好也想了解这块,就点赞、收藏吧 本文基于spark 3.2 本文大纲 1、Aggregate函数的几种mode2、生成WithOneDistinct...物理执行计划的几个阶段3、除了count distinct,没有其他非distinct聚合函数的情况的执行原理4、除了count distinct,有其他非distinct聚合函数的情况的执行原理5、关键点调试...6、总结 1、Aggregate函数的几种mode Partial: 局部数据的聚合。...,还要经过Final才是最终结果(count distinct 类型) Final: 起到的作用是将聚合缓冲区的数据进行合并,然后返回最终的结果 Complete: 不进行局部聚合计算,应用在不支持Partial...function to a non-distinct aggregation because // its input will have distinct arguments.

    1.2K10

    TCB系列学习文章——云开发的那些SDK

    、自定义登录、匿名登录等 cloudbase_function CloudBase Function 支持云函数能力 cloudbase_storage CloudBase Storage 支持对象存储能力...cloudbase_database CloudBase Database 支持文档型数据库能力 安装 在 flutter 项目的 pubspec.yaml 文件的 dependencies 中添加需要的插件...dotnet add package TencentCloudBase 支持版本 netstandard2.0 API开发文档指引 初始化 登录认证 云函数 数据库 文件存储 Node.js SDK(服务端...tcb-php-sdk 让你可以在服务端(如腾讯云云函数或 CVM 等)使用 php 服务访问 TCB 的的服务。 需要 php7 及以上版本。...将源码包放到项目合适的目录。 引入 如果项目使用 composer 管理依赖,则会自动引入,可跳过此步骤。

    1.8K30

    (下)史上最全干货!Flink SQL 成神之路(全文 18 万字、138 个案例、42 张图)

    4.9.SQL 聚合函数(Aggregate Function) 聚合函数即 UDAF,常用于进多条数据,出一条数据的场景。...使用 Java\Scala 开发一个 Aggregate Function 必须包含以下几点: ⭐ 实现 AggregateFunction 接口,其中所有的方法必须是 public 的、非 static...5.4.3.split 分桶 ⭐ 问题场景:使用两阶段聚合虽然能够很好的处理 count,sum 等常规聚合算子,但是在 count distinct,sum distinct 等算子的两阶段聚合效果在大多数场景下都不太满足预期...比如 count(distinct a),sum(distinct b) 这种多个 distinct key 也支持。 ⭐ 小伙伴萌自己写的 UDAF 不支持!...许多用户会选择 CASE WHEN 支持此功能,如下 SQL 所示: SELECT day, COUNT(DISTINCT user_id) AS total_uv, COUNT(DISTINCT

    3.6K22

    ClickHouse查询优化

    准备DISTINCT if (expressions.need_aggregate) { // 存在聚合函数,在windows函数...从代码中可以看到它也做了很多的优化:count()优化只有LIMIT情况的优化quota限制可以看到:limit大部分情况下是计算完成后再执行,而quota是在读取数据时执行的加速的关键是减少读入的数据量...,也就是说善用索引用count()、count(1)和count(*),ClickHouse都有优化,但不要count(any_field)索引设计索引是ClickHouse快速查询最重要的一环,分为主键索引...比如spark使用jdbc时,嵌套类型无法支持比如array(array(string))不通意义的值存储在相同字段,压缩率变低需要不同类型的预留字段时需要创建不同类型总结关于Schema设计这里,读者可以考虑...count() FROM table WHERE ...

    2.2K30

    ClickHouse 查询优化详细介绍

    曾经 GCC 使用 yacc/bison 作为语法解析器,在 3.x 某个版本之后改为手写递归下降语法分析[3] clang 一直是手写递归下降语法分析[4] 手写语法分析比起语法分析工具有几个优势(当然要写得好的情况...准备DISTINCT             if (expressions.need_aggregate)             {                 // 存在聚合函数,在windows...,也就是说善用索引 用count()、count(1)和count(*),ClickHouse 都有优化,但不要count(any_field) 索引设计 索引是 ClickHouse 快速查询最重要的一环...比如 spark 使用 jdbc 时,嵌套类型无法支持比如 array(array(string)) 不通意义的值存储在相同字段,压缩率变低 需要不同类型的预留字段时需要创建不同类型 总结 关于 Schema...= 0) AS hit_query_count,     count() AS total_query_count,     hit_query_count / total_query_count AS

    2.4K80

    ClickHouse 查询优化

    准备DISTINCT if (expressions.need_aggregate) { // 存在聚合函数,在windows...从代码中可以看到它也做了很多的优化: count() 优化 只有 LIMIT 情况的优化 quota 限制 可以看到: limit 大部分情况下是计算完成后再执行,而 quota 是在读取数据时执行的...加速的关键是减少读入的数据量,也就是说善用索引 用 count()、count(1) 和 count(*),ClickHouse 都有优化,但不要 count(any_field) 索引设计 索引是 ClickHouse...比如 spark 使用 jdbc 时,嵌套类型无法支持比如 array(array(string)) 不通意义的值存储在相同字段,压缩率变低 需要不同类型的预留字段时需要创建不同类型 总结 关于 Schema...= 0) AS hit_query_count, count() AS total_query_count, hit_query_count / total_query_count AS

    30110
    领券