10. Doris 系列第10篇:数据查询全攻略|Join/子查询/窗口函数,从基础到高级实战

doris:聚合多维分析 阅读详情

适合人群:大数据开发、Doris查询调优工程师、数仓分析师、BI工程师

核心价值:吃透Doris 2.x数据查询核心能力,掌握Join算法选型、子查询优化、多维聚合、窗口函数实战,解决查询慢、资源浪费、语法报错等问题

系列说明:本文是Doris进阶系列第10篇,承接上篇物化视图,聚焦数据查询全场景,基于Doris 2.x最新架构,覆盖从基础查询到高级分析的所有核心知识点,全程纯生产干货,兼顾原理、实操与调优,看完直接落地。

一、开篇核心:Doris查询能力,撑起企业级OLAP分析

数据查询是Doris的核心场景,也是OLAP数据库的核心竞争力。Doris 2.x的查询能力已达到企业级水平,能够高效支撑:简单点查、复杂多表Join、多维聚合分析、窗口序列分析等全场景需求。

本文将从四大核心模块展开,层层递进,帮你掌握Doris查询的底层逻辑与实战技巧:

  • 分布式Join:算法选型与优化,减少网络开销;

  • 子查询:语法支持与自动优化,降低使用成本;

  • 多维聚合:Grouping Sets/Cube/Rollup,适配BI报表场景;

  • 窗口函数:全场景支持与性能优化,搞定排名、移动计算等需求。

二、分布式Join:实现与优化(查询性能的核心关键)

Join是多表关联查询的基础,Doris支持多种分布式Join算法,核心设计思想是:减少网络Shuffle、充分利用数据分布特性,根据表大小、分桶策略、统计信息自动选择最优算法,无需手动干预(可通过Hint调整)。

2.1 Doris支持的Join类型(语法与兼容性)

Doris兼容MySQL常用Join语法,部分类型暂不支持,具体如下表(截至Doris 2.2版本):

SQL语法Doris支持情况核心说明
INNER JOIN(内连接)✅ 支持默认Join类型,只返回两表匹配的数据
LEFT/RIGHT [OUTER] JOIN(左/右外连接)✅ 支持左连接返回左表所有数据,右表匹配不到则为NULL;右连接反之
FULL OUTER JOIN(全外连接)❌ 不支持(截至2.2)社区已提交PR,后续版本将支持,当前可通过UNION ALL模拟
CROSS JOIN(交叉连接)✅ 支持(需显式写CROSS JOIN)笛卡尔积,会产生大量数据,慎用(如两表各10万行,结果100亿行)
SEMI JOIN / ANTI JOIN(半连接/反连接)✅ 支持(通过子查询改写)SEMI JOIN对应WHERE a IN (SELECT b FROM t2);ANTI JOIN对应WHERE a NOT IN (SELECT b FROM t2)

2.2 核心Join执行算法(物理实现,重点掌握)

Doris会根据表的大小、分桶策略、统计信息,自动选择最优的Join算法,不同算法的适用场景、原理差异较大,下面逐一拆解(生产必学)。

(1)Broadcast Join(广播Join,最常用)

✅ 实现原理

将右表全量广播(复制)到左表所在的所有BE节点,每个BE节点在本地完成左表与右表的Join,无需跨节点数据传输。

🔍 触发条件(满足其一即可)
  • 右表预估大小 < broadcast_join_threshold(默认100MB,单位:字节);

  • 手动通过Hint强制指定:/*+ SET_VAR(broadcast_join_threshold=1073741824) */(将阈值改为1GB,强制广播)。

⚙️ 优缺点
  • 优点:无网络Shuffle,执行速度快,资源开销低,适合大表Join小维表;

  • 缺点:右表过大会导致内存溢出(OOM),因为右表需要全量加载到每个BE的内存中。

📌 生产最佳实践

维度表(如user_dim用户维表、product_dim商品维表)通常数据量较小(<1GB),天然适合作为右表,走Broadcast Join,这是生产中最常见的Join场景。

-- 示例:事实表(大表)Join维表(小表),自动走Broadcast Join
SELECT 
    l.order_id, l.user_id, u.city, l.amount
FROM fact_order l
LEFT JOIN dim_user u ON l.user_id = u.user_id;
-- 若dim_user < 100MB,自动广播右表,本地Join

(2)Shuffle Join(重分区Join,通用型)

✅ 实现原理

对参与Join的两张表,按Join Key做Hash Shuffle(重分区),将相同Join Key的数据分发到同一个BE节点,然后在每个BE节点本地完成Join。

🔍 触发条件

两表预估大小均大于broadcast_join_threshold(默认100MB),无法走Broadcast Join时,自动触发Shuffle Join。

⚙️ 优缺点
  • 优点:可处理任意大小的表,无内存溢出风险(内存不足时会自动Spill到磁盘);

  • 缺点:网络I/O开销高,Shuffle阶段通常占用查询总时间的60%+,是性能瓶颈。

⚠️ 生产避坑

Shuffle Join的性能瓶颈在网络传输,尽量避免大表之间的Shuffle Join;若必须使用,可调整Shuffle并发度、增大BE内存,减少Spill到磁盘的频率。

(3)Colocation Join(协同定位Join,Doris特色,性能最优)

✅ 实现原理

若两张表满足“分桶键相同 + 分区策略一致”,则相同Bucket(分桶)的数据会被分配到同一个BE节点,Join时无需跨节点Shuffle,直接在本地完成Join,是性能最优的Join算法。

🔍 启用条件(必须同时满足)
  1. 建表时指定同一个Colocation Group(协同组);

  2. 两表的分桶键相同、分桶数一致;

  3. 两表的分区策略一致(如均为RANGE分区,分区键相同)。

🔧 建表示例(生产实战)
-- 表1:事实表t1,指定Colocation Group为group1
CREATE TABLE t1 (
    dt DATE COMMENT '分区键',
    k1 BIGINT COMMENT '分桶键',
    value INT COMMENT '值'
) ENGINE=OLAP
DUPLICATE KEY(dt, k1)
PARTITION BY RANGE(dt) (
    PARTITION p202501 VALUES [('2025-01-01'), ('2025-02-01'))
)
DISTRIBUTED BY HASH(k1) BUCKETS 10
PROPERTIES("colocate_with" = "group1");  -- 指定协同组

-- 表2:事实表t2,与t1同协同组、同分桶键、同分区策略
CREATE TABLE t2 (
    dt DATE COMMENT '分区键',
    k1 BIGINT COMMENT '分桶键',
    value INT COMMENT '值'
) ENGINE=OLAP
DUPLICATE KEY(dt, k1)
PARTITION BY RANGE(dt) (
    PARTITION p202501 VALUES [('2025-01-01'), ('2025-02-01'))
)
DISTRIBUTED BY HASH(k1) BUCKETS 10
PROPERTIES("colocate_with" = "group1");  -- 与t1同组
🔍 验证方法

执行EXPLAIN SELECT ... FROM t1 JOIN t2 ON t1.k1 = t2.k1;,若计划中出现COLOCATE字样,说明成功启用Colocation Join。

✅ 性能收益

相比Shuffle Join,Colocation Join可减少100%的网络Shuffle,查询速度提升3~10倍,是大事实表之间Join的首选方案。

(4)Bucket Shuffle Join(桶级Shuffle,Doris 2.0+ 新增)

✅ 实现原理

介于Shuffle Join和Colocation Join之间,当两表分桶数一致,但不满足Colocation Join的其他条件(如分区策略不同)时,仅Shuffle缺失的Bucket数据,而非全表Shuffle,减少网络传输量。

🎯 适用场景

两表分桶数一致,但分区策略不同,无法启用Colocation Join,且两表均较大,不适合Broadcast Join的场景。

✅ 性能收益

比普通Shuffle Join减少50%+的网络流量,执行效率显著提升。

2.3 生产Join优化建议(按场景分类,直接套用)

业务场景优化建议补充说明
维表(小表)Join事实表(大表)确保维表大小 < 100MB,让查询自动走Broadcast Join若维表略大于100MB,可通过Hint调大broadcast_join_threshold
大事实表之间Join设计相同分桶键,启用Colocation Join建表时提前规划分桶键,确保两表分桶数、协同组一致
Join Key数据倾斜(部分Key数据量极大)使用SKEW JOIN Hint(实验性),或预处理打散倾斜KeyHint示例:/*+ SKEW_JOIN(t1, t2, join_key) */
多表Join(3表及以上)按表大小升序排列(小表在左),利于RBO优化选择最优Join顺序小表先Join,减少后续Join的数据量

三、子查询(Subquery):语法支持与自动优化

Doris全面支持SQL子查询,且会自动对其子查询进行优化(如去关联化、转换为Join),无需用户手动改写,降低使用成本。但需注意部分子查询场景暂不支持,避免踩坑。

3.1 支持的子查询类型(生产常用)

子查询类型示例支持情况补充说明
标量子查询SELECT (SELECT max(id) FROM t2) FROM t1;✅ 支持子查询返回单个值,可作为列使用
IN子查询SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);✅ 支持自动转换为LEFT SEMI JOIN,提升效率
EXISTS子查询SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.id = t1.id);✅ 支持自动转换为LEFT SEMI/ANTI JOIN,避免嵌套循环
关联子查询SELECT * FROM t1 WHERE id > (SELECT avg(id) FROM t2 WHERE t2.dt = t1.dt);✅ 支持需通过去关联化(Decorrelation)优化,转换为Join
FROM子查询(派生表)SELECT * FROM (SELECT id FROM t1) t;✅ 支持自动将外层谓词下推到子查询,减少扫描数据量

3.2 不支持的子查询场景(避坑重点)

⚠️ 核心禁忌:NOT IN子查询中包含NULL值,会导致语义歧义(NULL与任何值比较结果都是NULL),Doris不支持此类场景,建议用NOT EXISTS替代。

-- ❌ 不支持:NOT IN 包含NULL值
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2);  -- 若t2.id有NULL,结果异常

-- ✅ 推荐替代方案:NOT EXISTS
SELECT * FROM t1 WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE t2.id = t1.id);

3.3 子查询核心优化技术(Doris自动完成)

Doris的查询优化器会自动对於子查询进行优化,无需用户手动干预,核心优化技术有3种:

(1)去关联化(Decorrelation):解决关联子查询效率低的问题

核心逻辑:将依赖外层表的关联子查询,转换为Join + Group By的形式,避免嵌套循环,提升执行效率。

-- 原始关联子查询(效率低,嵌套循环)
SELECT * FROM orders o 
WHERE o.amount > (SELECT AVG(amount) FROM orders o2 WHERE o2.user_id = o.user_id);

-- Doris自动优化后(去关联化,转换为Join)
SELECT o.* 
FROM orders o
JOIN (SELECT user_id, AVG(amount) AS avg_amt FROM orders GROUP BY user_id) tmp
  ON o.user_id = tmp.user_id
WHERE o.amount > tmp.avg_amt;

(2)Semi/Anti Join转换:提升IN/EXISTS子查询效率

核心逻辑:将IN子查询转换为LEFT SEMI JOIN,将NOT EXISTS子查询转换为LEFT ANTI JOIN,充分利用Join优化器(如Broadcast Join),提升执行效率。

-- 原始IN子查询
SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);

-- 自动转换为LEFT SEMI JOIN
SELECT t1.* FROM t1 LEFT SEMI JOIN t2 ON t1.id = t2.id;

(3)谓词下推(Predicate Pushdown):减少子查询扫描数据量

核心逻辑:对FROM子查询(派生表),将外层WHERE条件下推到子查询内部,提前过滤无效数据,减少子查询的扫描量和计算量。

-- 原始查询(外层条件未下推,子查询扫描全表)
SELECT * FROM (SELECT id, name FROM users) u WHERE u.id > 100;

-- Doris自动优化后(谓词下推,子查询仅扫描id>100的数据)
SELECT id, name FROM users WHERE id > 100;

四、多维聚合分析:Grouping Sets / Cube / Rollup

Doris支持标准SQL的多维聚合扩展(Grouping Sets、Cube、Rollup),主要用于BI报表、数据下钻分析场景,能够快速生成多维度聚合结果,无需编写多个独立查询。

4.1 语法支持(生产实战示例)

以sales表(包含city、category、sales字段)为例,展示三种多维聚合的用法:

(1)Grouping Sets:指定多个分组组合

手动指定需要聚合的分组维度组合,灵活控制聚合结果,适合自定义多维报表。

-- 示例:同时按(city)、(category)、(无分组,全局聚合)三个维度聚合
SELECT city, category, SUM(sales) AS total_sales
FROM sales
GROUP BY GROUPING SETS ((city), (category), ());
-- 结果包含3类数据:按城市聚合、按分类聚合、全局聚合

(2)Cube:所有可能的维度组合

自动生成所有维度的组合(共2^N种,N为维度数),适合全维度下钻分析,维度不宜过多(≤3个)。

-- 示例:city和category两个维度,生成所有4种组合((city,category)、(city)、(category)、())
SELECT city, category, SUM(sales) AS total_sales
FROM sales
GROUP BY CUBE(city, category);

(3)Rollup:层级聚合(自上而下)

按维度的层级关系,生成自上而下的聚合结果,适合层级报表(如年→月→日、区域→城市)。

-- 示例:按year→month→day层级聚合,生成4种组合
SELECT year, month, day, SUM(sales) AS total_sales
FROM sales
GROUP BY ROLLUP(year, month, day);
-- 组合顺序:(year,month,day) → (year,month) → (year) → ()

4.2 执行原理

  1. 逻辑计划阶段:将多维聚合语句展开为多个GROUP BY语句,通过UNION ALL合并结果;

  2. 物理计划阶段:共享Scan(扫描)和部分Agg(聚合)计算,避免重复扫描基表,提升效率;

  3. 结果标识:使用GROUPING()函数区分NULL值——NULL是真实数据,还是聚合后的汇总标记(1表示该维度未参与聚合,0表示参与聚合)。

-- 示例:用GROUPING()区分NULL来源
SELECT 
    city,
    category,
    GROUPING(city) AS grp_city,  -- 1:city未参与聚合;0:参与聚合
    GROUPING(category) AS grp_category,
    SUM(sales) AS total_sales
FROM sales
GROUP BY CUBE(city, category);

4.3 性能考量(生产选型建议)

实现方式基表扫描次数适用场景注意事项
单次Cube/Grouping Sets1次维度数≤3,聚合结果集可控维度过多(≥4)会导致结果集爆炸,引发OOM
多次独立GROUP BY查询N次(N为维度组合数)维度多、结果集大,避免OOM扫描次数多,总耗时可能更高
💡 生产替代方案

对高频的Cube/Grouping Sets查询,建议预先创建物化视图(同步Rollup或异步MV),将预聚合结果持久化,查询时直接命中MV,大幅提升效率。

五、分析函数(窗口函数,Window Function)

Doris全面支持ANSI SQL窗口函数,用于排名、移动平均、累计计算、序列分析等场景,广泛应用于业务报表、用户行为分析、销售趋势分析等,Doris 2.0+ 对常见窗口函数实现了向量化加速,性能大幅提升。

5.1 支持的窗口函数类别(生产常用)

函数类别常用函数示例核心用途
排名函数ROW_NUMBER(), RANK(), DENSE_RANK()对数据进行排名(如销售排行榜)
聚合函数SUM(), AVG(), COUNT(), MIN(), MAX()窗口内聚合(如累计销售额、移动平均)
偏移函数LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE()获取窗口内指定位置的数据(如上一次访问时间)
分布函数NTILE(), PERCENT_RANK()数据分桶、百分比排名(部分函数为实验性支持)

5.2 窗口定义语法(核心格式)

窗口函数的核心是“窗口定义”,通过OVER()子句指定窗口的分区、排序和范围,语法格式如下:

function(...) OVER (
    [PARTITION BY partition_expr]  -- 窗口分区(类似GROUP BY,分区内独立计算)
    [ORDER BY order_expr [ASC|DESC]]  -- 分区内排序
    [window_frame]  -- 窗口帧(指定窗口范围)
)

窗口帧(Window Frame)类型(重点)

窗口帧用于指定窗口内的计算范围,Doris支持两种类型,默认使用RANGE帧:

  • ROWS:物理行范围(基于行的位置),示例:ROWS BETWEEN 2 PRECEDING AND CURRENT ROW(当前行及前2行);

  • RANGE:逻辑值范围(基于排序字段的数值),示例:RANGE BETWEEN INTERVAL 7 DAY PRECEDING AND CURRENT ROW(当前行及前7天的数据);

  • 默认值:RANGE UNBOUNDED PRECEDING(从分区起始行到当前行,即累计窗口)。

5.3 执行原理与性能优化

(1)执行模型

  1. 排序阶段:按PARTITION BY + ORDER BY对数据进行排序(这是窗口函数的性能瓶颈);

  2. 滑动计算:维护窗口内的计算状态(如Sum、Count),避免重复计算;

  3. 向量化支持:Doris 2.0+ 对SUM、ROW_NUMBER、LAG、LEAD等常见窗口函数实现了向量化加速,提升执行效率。

(2)性能关键点(生产调优重点)

常见问题优化方案
大Partition排序慢(单分区数据量过大)确保PARTITION BY列是高基数列,避免单分区数据量过大;必要时拆分分区
无界窗口(UNBOUNDED)内存占用高慎用于大表;若必须使用,调大BE内存,避免OOM
RANGE窗口含时间维度,计算慢使用DATETIME类型列,避免字符串类型转换;提前对时间列建立索引

(3)典型应用场景(生产实战示例)

-- 场景1:用户行为序列分析(获取用户上一次访问时间)
SELECT 
    user_id,
    event_time,
    LAG(event_time, 1) OVER (
        PARTITION BY user_id 
        ORDER BY event_time
    ) AS last_visit_time
FROM user_log;

-- 场景2:销售排行榜(按销售额排名,相同销售额排名相同)
SELECT 
    product_id,
    sales,
    RANK() OVER (ORDER BY sales DESC) AS sales_rank
FROM daily_sales;

-- 场景3:7日移动平均(计算每日销售额的7日均值,含当日)
SELECT 
    dt,
    revenue,
    AVG(revenue) OVER (
        ORDER BY dt 
        RANGE BETWEEN INTERVAL 6 DAY PRECEDING AND CURRENT ROW
    ) AS ma7_revenue
FROM sales_daily;

六、高级功能对比与选型指南(生产快速决策)

结合前面的四大模块,整理生产中常见查询功能的选型建议,帮你快速决策,避免踩坑:

功能适用场景性能提示
Broadcast Join大表 + 小维表关联(维表<1GB)控制维表大小,避免OOM;可通过Hint调整阈值
Colocation Join同分桶、同分区策略的大事实表关联建表时提前规划分桶键和协同组
物化视图固定聚合、多表Join的高频查询替代运行时Cube/Join,大幅提升查询速度
第6.6章:Doris查询加速——单节点实现数万 QPS,高并发点查 第6.6章:Doris查询加速——高并发点查原理 阅读详情

相关推荐

Doris基础使用手册.pdf

Doris基础使用手册.pdf

Doris-03-Doris的查询(Join查询、去重)

HLL 是基于 HyperLogLog 算法的工程实现,用于保存 HyperLogLog 计算过程的中间结果,它只能作为表的 value 列类型、通过聚合来不断的减少数据量,以此来实现加快查询的目的,基于它得到的是一个估算结果,误差大概在1%左右,hll 列是通过其它列或者导入数据里面的数据生成的,导入的时候通过 hll_hash 函数来指定数据中哪一列用于生成 hll 列,它常用于替代 count distinct,通过结合 rollup 在业务上用于快速计算uv等。如果是多分区表,则会有多个。

迷雾总会解 5280

基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】

比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。

qq_46044366的博客 2103

Doris-查询(三)

Doris查询

大数据知识梳理 5555

大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护

本文深度解析了大麦APP抢票协议的安全防护体系,重点分析了'掌密网络'代码中体现的动态签名、设备指纹和人机验证等关键技术。文章详细介绍了大麦APP如何通过多层次API安全防护应对抢票压力,包括参数加密、请求头部设计和异常处理机制,为移动应用开发者提供了安全实践建议。

weixin_28740299的博客 289

.ipynb文件深度解析:从JSON结构到Jupyter Notebook高效使用指南

在Python开发与数据处理领域,交互式编程正成为探索数据与验证思路的高效方式。Jupyter Notebook作为最流行的交互式环境之一,其默认文件格式.ipynb本质是一个基于JSON的文本文件,内部通过单元格组织代码、说明文字与运行结果。理解其JSON结构,不仅有助于掌握Notebook的存储原理,更能为文件损坏修复、版本控制与自动化转换提供基础。依托对单元格类型、魔法命令及输出可视化的熟练运用,数据分析和数据可视化流程可以变得更为流畅。同时,借助VS Code、nbconvert等工具,开发者能将.

weixin_28839629的博客 343

Apache Doris 入门 10 问

本文解答了Apache Doris 在读写流程、副本一致性机制、 存储机制、高可用机制等方面的常见疑问点,欢迎订阅。

SelectDB 1952

Vivado ILA调试全攻略:从HDL实例化到Block Design的5个实战技巧

本文全面解析了Vivado集成逻辑分析仪(ILA)的五种核心调试方法,涵盖从HDL代码实例化到Block Design集成的实战技巧。详细对比了不同方法的优缺点与适用场景,并重点介绍了如何利用Debug Hub高效管理多时钟域复杂调试,旨在帮助FPGA开发者精准定位问题,显著提升板级调试效率。

weixin_29214199的博客 375

Doris--基础--10--数据模型

数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。在建表语句中指定的 DUPLICATE KEY,只是用来指明底层数据按照那些列进行排序。适用场景:既没有聚合需求,又没有主键唯一性约束的原始数据的存储。

zhou920786312的博客 1805

Mplus实战:如何用交叉滞后面板模型(CLPM)分析心理学纵向数据?

本文提供了在Mplus软件中应用交叉滞后面板模型(CLPM)分析心理学纵向数据的实战指南。文章详细拆解了CLPM的核心概念、Mplus语法框架,并涵盖从基础的两变量模型到多变量、潜变量建模的扩展,以及结果解读与常见陷阱规避,旨在帮助研究者利用这一经典工具有效探索变量间的动态预测关系。

weixin_29253711的博客 402

相机图像质量评估标准全解析:MTF、CA、SNR 与色彩偏差的实战理解

图像质量评估是影像系统开发中的核心环节,它直接影响用户视觉体验与终端产品竞争力。本文基于真实的图像调试工程实践,系统讲解主流图像评价指标,包括调制传递函数(MTF)、色差(CA)、信噪比(SNR)与色彩偏差(DeltaE)等关键标准。结合 Imatest 测试流程与实际样张数据,逐项拆解各项指标在实际图像分析中的意义与优化路径,帮助开发者建立完整、量化、工程化的图像质量评估体系。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2803

Doris知识点总结2

Doris知识点总结2

爱吃辣条的博客 5428

安路TangDynasty和FD和JTAG驱动器安装

安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。

wangjie36的博客 1027

不能对包含聚合或子查询的表达式执行聚合函数_Apache Doris 查询原理

Doris 查询简介Doris Query 接收Doris Query ParseDoris Query AnalyzeDoris Query RewriteDoris Query 单机PlanDoris Query 分布式PlanDoris Query 调度Doris Query 执行总结Doris 查询简介Doris 的查询和大多数数据库一样,需要经过 Parse,Analyze,O...

weixin_39784972的博客 1934

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

新时代先锋的博客 7296

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Doris使用详解

对于需要高并发、低延迟的企业级应用(如金融风控、电商大促),Doris 是替代传统 Hive+Impala 架构的理想选择。通过合理设计数据模型(选择 Duplicate/Aggregate Key)、优化分区分桶策略,并结合物化视图与向量化引擎,可显著提升查询效率。Apache Doris(原 Palo)是一个基于 MPP(大规模并行处理)架构的实时分析型数据库,专为高并发、低延迟的 OLAP(联机分析处理)场景设计。以下结合技术特性与适用场景,系统梳理 Doris 的十大高级能力,

技术人集结地 6675

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Doris:读取Doris数据的N种方法

读取Doris数据的N种方法

m0_37559973的博客 5623

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

doris基础知识点:数据模型

Apache Doris 提供三种数据模型:Duplicate 模型保留所有原始数据;Aggregate 模型对相同维度数据进行聚合计算;Unique 模型保证主键唯一性。建表语句支持定义列属性、分区、索引等优化功能,并包含两种变体:CTAS(基于查询创建预填充表)和LIKE(复制表结构)。通过合理配置分区、分布方式等参数可提升存储和查询性能。

qq_45755385的博客 408

Doris 学习

Docker

danevc的博客 1376

Doris建表指南:从语法详解到数据类型全面解析

KEY] -- 标记为维度列[AGGREGATE_TYPE] -- 聚合类型:SUM/MAX/MIN/REPLACE[NOT NULL] -- 非空约束[DEFAULT default_value] -- 默认值[ON UPDATE CURRENT_TIMESTAMP] -- 更新时自动更新时间戳(仅主键模型)[COMMENT 'comment'] -- 列注释知识点核心内容建表语法CREATE TABLE + 列定义 + 数据模型 + 分区分桶 + 属性数据模型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1774

doris:子查询

doris:子查询

qq_36070104的博客 1811

Doris命令使用示例:查看表的信息

Apache Doris(以前称为Palo)是一个现代化的MPP(大规模并行处理)SQL数据库,用于实时分析。要查看当前数据库下所有表的信息,你可以使用Doris提供的SQL命令。首先,你需要使用Doris客户端工具(如mysql命令行工具或任何支持MySQL协议的客户端)连接到Doris集群。假设你已经安装了mysql其中是Doris服务器的IP地址或主机名,是Doris监听的端口,默认是9030,是你的用户名。其中是你要查看的数据库名称。

学亮编程手记 3664

doris查询性能优化

对比发现scm_employee_salary的hash计算时间,数据合并时间,以及序列化key时间等等都比test_scm_employee_salary的要短,通过前缀索引的调整整体可以提升25%左右的性能。对比发现scm_employee_salary的hash计算时间,数据合并时间,以及序列化key时间等等都比test_scm_employee_salary的要短,通过前缀索引的调整整体可以提升25%左右的性能。这个一种非常明显的空间换时间的优化,他只是提前将sql的执行结果放入一个物化表中。

qq_57106792的博客 4546

【遇见Doris】Apache Doris (incubating) 0.11.0新版本预览线下沙龙

此次Doris有幸得到中国信通院云大所、大数据技术标准推进委员会的支持,在中国信通院举行了0.11.0新版本预览线下沙龙。同时我们也有幸邀请到了来自一点资讯、京...

ucanuup_的博客 256

Doris学习笔记

2.基于MPP(大规模并行处理)架构分析型数据库,将大任务拆分为并行小任务。4.支持标准SQL语言,兼容MySQL协议。3.性能卓越,pb级别数据毫秒、秒级响应。7.高性能、高可用、高可靠(集群)8.极简运维,弹性伸缩。5.高效的聚合表技术。6.新型预聚合表技术。

Gengxin的博客 459

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 398
上一篇: 9. Doris 系列第9篇:物化视图全解析|同步Rollup+异步MV,查询加速从毫秒级突破
下一篇: 11. Doris 系列第 11 篇:查询加速核心精讲|四层技术体系全覆盖,从底层 IO 到建模优化落地
juniperhan
博客等级 码龄1年 132粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值