Danner Blog

Took the sourest lemon that life has to offer and turned it into something resembling lemonade.

Mac postgresql 测试环境

老规矩:Mac 上开发,docker 上编译测试;这次直接在 Mac 上安装启动docker。 git code 在github 上fork pg 代码后,在mac 上git code git clone https://github.com/user/postgres.git # fork 后丢失其他分支,为了能拉取 REL_15_STABLE 分支 git remote add ...

Duckdb:TaskScheduler

TaskScheduler 在 DuckDB 启动时会创建一个全局的 TaskScheduler,在后台启动(CPU内核数-1) 个后台线程,启动线程是在 TaskScheduler::SetThreadsInternal() 函数中进行 (gdb) bt #0 duckdb::TaskScheduler::SetThreadsInternal (this=0x2cfead8...

Duckdb:Push-Based Execution Model

Push data into operator when data is available PhysicalOperator 可以分为三种类型: Operator:Transform,数据处理 Source:数据源 Sink:数据汇总,当前Pipeline 的Sink 必定是下一个Pipeline 的Source 一般Operator 都是以上某一类别,但有...

Mac duckdb 测试环境

老规矩:Mac 上开发,docker 上编译测试;这次直接在 Mac 上安装启动docker。 git code 在github 上fork duckdb 代码后,在mac 上git code git clone https://github.com/user/duckdb.git git remote add upstream https://github.com/duckdb/d...

StarRocks 添加SQL 语法

从 SQL 文本到分布式物理执行计划, 在 StarRocks 中,需要经过以下 5 个步骤: 1、SQL Parse: 将 SQL 文本转换成一个 AST(抽象语法树) 2、SQL Analyze:基于 AST 进行语法和语义分析 => 本文 3、SQL Logical Plan: 将 AST 转换成逻辑计划 4、SQL Optimize:基于关系代数...

StarRocks 开发环境

主要是C/C++ 编译依赖于CPU,Java 没啥特别。 基本策略 开发/远程机代码同步是通过 git,IDE的 sync code 功能和git 分支切换,不太好使 IDEA/Clion 连接远程机器,远程调试 git 开发机 按照 https://github.com/StarRocks/community/blob/main/Contributors/guide/...

cmu15445 BufferPool lab 笔记

Site: https://15445.courses.cs.cmu.edu/fall2022/project1/ Pdf: https://15445.courses.cs.cmu.edu/fall2022/slides/06-bufferpool.pdf 实现一个buffer pool 存放部分DB 数据,加快DB 数据读取。 要实现buffer pool 需要两个数据结构:可...

StarRocks Optimizer:StatisticsCalculator

Cost 里最重要的是基数估计:输出多少row,决定 Cost。 Scan 从最基础的scan 开始 如何计算当前scan 会多少数据量? 元数据中获取 rowsize 谓词裁剪,一般情况不可能是全表扫描 分区,只获取某几个/范围内的分区数据 普通字段过滤 // com.starrocks.sql.optimizer.s...

StarRocks Optimizer:Physical Rule Rewrite

在抽取完物理 Plan 以后,我们最后还会进行一个 Physical Rule Rewrite 阶段,这个阶段和 Logical Rule Rewrite 阶段相似,只是一些启发式规则的优化。之所以将这些规则放到最后,原因有两个方面: 物理阶段的优化,大多是局部性优化,原则上并不会影响分布式Plan的选择; 在前一个前提下,放在物理阶段优化,可以避免 Memo ...

StarRocks Optimizer:Extract Best Plan

在memo 中,遍历出所有的Physical Expression 以及Cost,本节基于此找出最优(Cost 最低)的Physical Plan。 memoOptimize 执行后,memo中Physical Expression 如下图所示 lowestCostExpressions : 左侧灰色方框 代表每一个 Group 中,满足 Required...