Clickhouse 如何在外部存储器中进行分组Group By 设置配置项 max_bytes_before_external_group_by、max_memory_usage

clickhouse 报内存不足的问题 文章目录概述解决办法 概述 在使用ck清洗数据的时候报内存不足: Progress: 1.83 billion rows, 85.31 GB (68.80 million rows/s., 3.21 GB/s.) 6%Received exception from server: Code: 241. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Memory limit (for query) 阅读详情

当Clickhouse中查询的数据量太大,并且超过了可用内存的范围的话,可以通过启用在磁盘(或外部存储器)中进行分组,将临时数据转储到磁盘以限制内存使用期间的 GROUP BY。

该 max_bytes_before_external_group_by 可以设置触发的阈值,当RAM消耗超过这个阈值后, GROUP BY 会把多余的临时数据输出到文件系统并在磁盘进行处理计算。 如果设置为0(默认值),则是禁用。

使用时 max_bytes_before_external_group_by,建议设置 max_memory_usage 大约两倍高。 因为聚合有两个阶段:

  • (1)读取数据和形成中间数据
  • (2)合并中间数据。

将数据转储到文件系统只能在阶段1中发生。 如果未转储临时数据,则阶段2可能需要与阶段1相同的内存量。

例如,如果 max_memory_usage 设置为10000000000,你想使用外部聚合,可以设置 max_bytes_before_external_group_by 到 10000000000,并且设置 max_memory_usage 到 20000000000。 当触发外部聚合(如果至少有一个临时数据转储)时,RAM的最大消耗仅略高于 max_bytes_before_external_group_by.

通过分布式查询处理,在远程服务器上执行外部聚合。 为了使请求者服务器只使用少量的RAM,设置 distributed_aggregation_memory_efficient 到1。

当合并数据刷新到磁盘时,以及当合并来自远程服务器的结果时, distributed_aggregation_memory_efficient 设置被启用,消耗高达 1/256 * the_number_of_threads 从RAM的总量。

当启用外部聚合时,如果数据量小于 max_bytes_before_external_group_by (例如数据没有被 flushed), 查询执行速度和不在外部聚合的速度一样快. 如果临时数据被flushed到外部存储, 执行的速度会慢几倍 (大概是三倍).

如果你有一个 ORDER BY 用一个 LIMIT 后 GROUP BY,然后使用的RAM的量取决于数据的量 LIMIT,不是在整个表。 但如果 ORDER BY 没有 LIMIT,不要忘记启用外部排序 (max_bytes_before_external_sort).

Clickhouse-CPU内存资源优化配置 阅读详情

相关推荐

大数据ClickHouse进阶(十三):ClickHouse的GROUP BY 子句

Group By子句又称聚合查询,与MySQL或者Hive中的使用方式一样,但是需要注意一点在Select查询中如果有聚合查询,例如max,min等,与聚合查询出现的字段一定要出现在Group by中,否则语句报错。ClickHouse中的Group by 还可以配合WITH ROLLUP、WITH CUBE、WITH TOTALS三种修饰符获取额外的汇总信息。CUBE 是立方体意思,WITH CUBE会基于聚合键之间所有的组合生成小计信息。

Lansonli(蓝深李)的博客 2608

ClickHouse 查询时报错:Memory limit (for query) exceeded: would use 9.38 GiB

ClickHouse

赵英超的博客 6271

【信息科学与工程学】【通信工程】第一百九十二篇 交换机体系结构01

编号类型领域问题详细的数学分析参数列表(表达式 / 范围 / 边界 / 测量)关联知识1.1算法-架构路由查找LPM 在多口线速下的时延界字符串集 + Trie 的偏序格:路由表 = 前缀集合 P⊂{0,1}^≤32,LPM 是找 p∈P 使 p 是 d 的最长前缀。TCAM 等价于并行匹配,复杂度 O(1);SRAM 软实现(DIR-24-8 等)≈ 多阶 Trie,期望比较次数 = 树深 = O(W),W=32/128。 优化理论:TCAM 占用 vs SRAM 的 knapsack:min ∑w

weixin_49199313的博客 517

2023-02-10 clickhouse-聚合-临时数据写入磁盘-分析

clickhouse-聚合-临时数据写入磁盘-分析。

悟世之路 868

【 ‌infrastructure】【数据中心】【AI infra】第十篇 智能计算数据中心解决方案集成测试和交付知识体系1005

路由协议需要同时处理动态拓扑(LEO)和静态拓扑(GEO),BGP 的收敛速度无法跟上 LEO 切换(秒级),而 OSPF 的 LSDB 更新过于频繁。mode 4(LACP)需要交换机支持,mode 0(round-robin)可能乱序,mode 2(active-backup)带宽利用率低。使用 DCB(Data Center Bridging)配置 PFC 优先级映射,将 RoCE 流量映射到高优先级(3 或 4),其他流量低优先级。或者使用异步 NVMe-oF,允许命令排队,容忍延迟。

weixin_49199313的博客 80

HCLR-Net: 混合对比学习正则化与局部随机扰动用于水下图像增强

独特贡献在于开发了一种处理负样本的新策略,既保留了负样本的统计特性,又防止网络过度剖析这些样本中的特征信息。通过根据每个通道特征的重要性对模型进行加权,我们可以增强富含上下文信息的通道,从而获得更准确、更详细的特征表示。AHA 模块利用垂直方向上的 Avgpool 和水平方向上的 Maxpool 来捕捉远程依赖关系和准确的位置信息,从而有效确定不同方向上的特征退化。对比学习策略通常旨在最小化正样本之间的欧氏距离,使预测图像更接近理想图像,同时最大化负样本与预测图像之间的距离,使它们进一步远离非理想表征。

G-Howe的博客 1459

clickhouse 内存不够

描述:插入表500+字段 50W数据可行! 100W数据报错 填坑:修改users.xml配置文件之 set max_bytes_before_external_group_by=20000000000; #20G set max_memory_usage=40000000000; #40G 参数解析:默认情况下,ClickHouse会限制group by使用的内存量(...

weixin_42618907的博客 1万+

Ubuntu 解决WPS缺少宋体,微软雅黑等中文字体

这篇博客解决Ubuntu 18.04 无法使用中文字体的问题 问题描述

分享日常的学习,开展的项目,编写的软件,解决的问题等~ 1万+

clickhouse 参数优化配置

max_memory_usage_for_user, max_memory_usage, max_bytes_before_external_group_by, max_bytes_before_external_sort, max_memory_usage_for_all_queries, max_concurrent_queries_for_user, max_concurrent_queries_for_all_users, max_concurrent_queries, max_serve

孤傲然的博客 1万+

EtherCAT简介

EtherCAT(EtherNet Control Automation Technology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(EtherCAT slave controller)芯片。主站的搭建方式有很多,例如:开源主站IGH、SOEM、商业化主站TwinCAT等。

m0_73482095的博客 1万+

海康工业相机触发模式详解:软触发 vs 外触发,在C#里如何选与用?

本文深入解析海康工业相机的软触发与外触发模式,详细比较两者的特性差异、适用场景及C#实现方法。通过海康SDK配置指南和实战代码示例,帮助开发者掌握工业相机触发模式的选择与优化技巧,提升自动化检测系统的精确性和可靠性。

weixin_42635064的博客 556

处理 Clickhouse 内存溢出

它们很容易解释,前者是这个语句所花费的时间,后者是内存使用,从图中可以看出 insert into table select from other-table 的语句,每条需要7s左右时间,且内存9G左右,这样62G的内存完全hold不住啊。后台线程池的大小,merge 线程就是在该线程池中执行,当然该线程池不仅仅是给 merge 线程用的,默认值 16,推荐 32 提升 merge 的速度 (CPU 允许的前提下)。这边需要注意一点,参数需要设置在user.xml下,不需要要重启,保存后就会生效。

2301_79096508的博客 2649

Cursor Cloud Agent:云原生编程工作流的底层重构

编程工作流正从本地计算范式转向云原生执行范式。Cloud Agent 本质是将代码理解、生成、执行与调试等核心能力下沉至隔离、可控、按需分配的云端虚拟机,通过 Firecracker 微虚拟机实现亚秒级启动,并依托上下文快照、环境镜像化和内核级沙箱保障一致性、算力弹性与数据安全。这一范式突破了传统本地 AI 编程助手在环境依赖、调试能力与企业合规上的根本局限,使 IDE 从编辑工具升维为分布式开发指挥中心。本文深入解析其运行机制与工程落地实践。

weixin_34354173的博客 337

Clickhouse专业避坑指南&最佳实践

前言本文通过列举一些用户在使用Clickhouse时经常遇到的问题,通过分析这些问题并提供最佳实践方式,从而帮助读者更好的将Clickhouse融入到生产环境中。1.数据块过多这是ClickHouse中经常出现的一个错误,通常是因为CickHouse的使用方式不正确、没有遵循最佳实践的方式进行数据写入,触发这个错误,并且会出现在ClickHouse日志或插入请求的响应中。要理解这个错误,用户需要对ClickHouse中“数据块”(data part)的概念有一个基本的了解。在ClickHouse中,一个表由

Gavin_ke的博客 5925

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

置顶必读(1) |《滚雪球学 Spring Boot 4.x》专栏目录导航篇(持续更新中)!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 8万+

MySql group by 及 clickhouse 聚合函数使用问题

背景:项目需要使用clickhouse及mysql数据库,且两个库中的表需要关联查询。 一.MySQL中使用 group by 说明:理论上select 所查询的列 都需要加在group by 后面,或者使用sum()、min()等聚合函数 1.MySQL中使用group by 查询时 可以通过MySQL sql_model设置是否可以查询未使用聚合函数的列。 sql_model设置值ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,.

li_csdn_的博客 8783

【020】C++ 动态内存管理解析:new 和 delete 的正确使用

C++中的动态内存分配是在程序运行时根据需要进行内存空间的分配和释放,与静态内存分配相比,具有更大的灵活性和适应性。动态内存分配可以通过new和delete或者malloc()和free()等函数实现。在程序运行时无法确定所需的内存大小。需要在多个函数之间共享数据,并且数据可能被频繁地创建和销毁。静态数组无法满足需求,例如需要支持可变长度数组。如果在动态分配内存后忘记了释放它,则会导致内存泄漏。为避免内存泄漏,可以使用智能指针或手动管理内存的方式来释放动态分配的内存。

Lion_Long的博客 1470

clickhouse 配置项解析

max_table_size_to_drop 此参数在 /etc/clickhouse-server/config.xml 中,应用于需要删除表或分区的情况,默认是50GB,意思是如果删除50GB以上的分区表会失败。建议修改为0,这样不管多大的分区表都可以删除。 max_memory_usage 此参数在 /etc/clickhouse-server/config.xml 中,表示单次Query占用内存最大值,超过的话会查询失败。建议尽量调大一些。 set max_bytes_before_e..

司马懿的西山居 9697

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

clickHouse之SQL语法之select(—)

select SELECT [DISTINCT] expr_list [FROM [db.]table | (subquery) | table_function] [FINAL] [SAMPLE sample_coeff] [ARRAY JOIN ...] [GLOBAL] ANY|ALL INNER|LEFT JOIN (subquery)|table US...

天生我材必有用,千金散尽还复来。 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ClickHouse数据聚合和分组

分组是数据聚合的一种方式,它将数据集按照某个属性的值进行分类,将具有相同属性值的数据项放置在同一个组中。分组可以帮助我们更好地理解数据的分布情况,以及对数据进行更细粒度的分析和处理。在数据库中,数据聚合通常是基于某个属性对数据进行分组,并对每个组进行聚合操作,例如计算平均值、求和或计数等。中的一种数据组织方式,可以将数据按照某个属性的值进行分区存储。是一个高性能、列式存储的分布式数据库,它内置了丰富的聚合和分组功能,可以帮助我们高效地进行数据分析和处理。中,可以使用各种聚合函数对分组后的数据进行计算。

互联网知识分享 3313

假人有限元模型

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

clickhouse 修改配置

临时修改 注意:该命令只能在 clickhouse-client 中执行,若在 DBeaver 中执行,会报错 全局修改

司马懿的西山居 7658

【Clickhouse那些事】Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库,在项目中也进行了一些实践,但一直都没有一些技术文章的沉淀,近期打算做个系列,通过一些具体的场景将Clickhouse的用法进行沉淀和分享,供大家参考。

killer1989的博客 3336

网易经验规整:ClickHouse开发与使用规范大全

导读:ClickHouse作为一款开源列式数据库管理系统(DBMS)近年来备受关注,主要用于数据分析(OLAP)领域。作者根据以往经验和遇到的问题,总结出一些基本的开发和使用规范,以供使用者参考。随着公司业务数据量日益增长,数据处理场景日趋复杂,急需一种具有高可用性和高性能的数据库来支持业务发展,ClickHouse是俄罗斯的搜索公司Yandex开源的MPP架构的分析引擎,号称比事务数据库快100...

Focus on Lakehouse 746

clickhouse使用问题处理_记录

clickhouse安装使用,以及在小内存机器上的实践与问题处理

qq_36892706的博客 2906
上一篇: 什么是 LSM 思想?它的优缺点都那些?
下一篇: Mac/m1终端配置自动登录ssh服务器等后续操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天河书阁 VicRestart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值