ClickHouse内存配置参数
2023-10-09 09:41 abce 阅读(5352) 评论(0) 编辑 收藏 举报1.max_memory_usage
运行单个查询时使用的最大内存量。
默认设置为无限(设置为 0)。
该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
某些聚合函数的状态不会受到内存使用情况的监控。
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。
内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。
2.max_memory_usage_for_user
在单个服务器上运行用户查询时使用的最大内存容量。
默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。
3.max_server_memory_usage
内存使用总量限制。零表示无限制。
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
4.max_server_memory_usage_to_ram_ratio
与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。
在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。
默认配置:
1 | <max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio> |
5.max_memory_usage_for_all_queries
默认值是0,即不限制对内存的使用。
内存配置的官方建议
1 | https://clickhouse.com/docs/en/operations/tips |
对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。
不要禁用overcommit。
1 | $ cat /proc/sys/vm/overcommit_memory 的值应为0或1 |
运行
1 | $ echo 0 | sudo tee /proc/sys/vm/overcommit_memory |
如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-10-09 【SQLServer】数据库自动收缩
2022-10-09 【转载】分享一个查看分析Oracle表空间使用情况的脚本
2019-10-09 pg执行计划分析小笔记
2017-10-09 SQL Server 阻止了对组件 'Agent XPs' 的 过程 'dbo.sp_set_sqlagent_properties' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
2017-10-09 MySQL -- 异步I/O
2015-10-09 RHCE7 管理I-12归档文件并在Linux系统间复制文件
2015-10-09 RHCE7 管理II-6ACL的使用