首页 > 系统相关 >ClickHouse内存配置参数

ClickHouse内存配置参数

时间:2023-10-09 09:58:16浏览次数:39  
标签:max server 参数 内存 memory usage ClickHouse 内存容量

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 表示可以使用所有可用内存。
默认配置:

<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>

 

5.max_memory_usage_for_all_queries
默认值是0,即不限制对内存的使用。


内存配置的官方建议

https://clickhouse.com/docs/en/operations/tips

对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。

不要禁用overcommit。

$ cat /proc/sys/vm/overcommit_memory 的值应为0或1

运行

$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory

如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。

标签:max,server,参数,内存,memory,usage,ClickHouse,内存容量
From: https://www.cnblogs.com/abclife/p/17684397.html

相关文章

  • action参数
    @action()action装饰器可以接收两个参数:methods:声明该action对应的请求方式,列表传递detail:声明该action的路径是否与单一资源对应,及是否是xxx/<pk>/action方法名/True表示路径格式是xxx/<pk>/action方法名/False表示路径格式是xxx/action方法......
  • Java内存泄漏的排查思路
           ......
  • PyQt 自定义信号带参数 emit
    PyQt5自定义信号带参数importsysfromPyQt5.QtCoreimportpyqtSignal,QObjectfromPyQt5.QtWidgetsimportQMainWindow,QApplicationclassmysignal(QObject):closeApp=pyqtSignal(list)classExample(QMainWindow):def__init__(self):super().......
  • MT6771安卓核心板-MTK6771核心板性能参数_联发科4G模组
    MT6771安卓核心板是一款基于MTK平台的高性能智能模块,运行Android10.0操作系统,该模块具备强大的处理能力和完善的通信功能。核心处理器采用ARM架构,包括4个Cortex-A73核心和4个Cortex-A53核心,主频高达2.0GHz,能够为智能设备提供出色的计算支持。MTK6771核心板可提供定制化的开发......
  • Arm Linux内存管理(一)
    ArmLinux内存管理(一)大文  2人赞同了该文章一、Armlinux的基本概念1.ArmLinux物理内存Arm平台内存大小的定义在DTS设备树中定义arch/arm/boot/dts/vexpress-v2p-ca9.dts中内核在启动过程中,需要解析dts文件。代码的调用关系为:start_kernel()->setu......
  • 用程序小小11孩岁女A片㓜或操作系统使用的逻辑地址式与具体的内存管理单元(MMU)的实现有
    在ARM架构中,块地址是物理地址的一部分,用于标识cache中存储数据的物理位置。索引(index)是用于确定cache行对应的物理地址的部分,而标记(tag)则用于标识cache行中所存储数据的虚拟地址。当CPU访问虚拟地址时,硬件会根据虚拟地址与索引掩码进行按位与(AND)操作,得到索引,然后使用索引和标记在c......
  • Spring-AOP根据spel获取方法参数值、Bean对象属性值
    Spring-AOP根据spel获取方法参数值、Bean对象属性值,动态的获取属性值,可以用来做注解式分布式锁、注解式获取属性值等等。第一步:自定义注解,代码如下所示packagecom.example.springbootstudy.interfaces;importjava.lang.annotation.*;@Target(ElementType.METHOD)@Inheri......
  • 内核态内存的正确使用方法
    前言看完了伙伴系统的设计、slab分配器的设计、vmalloc、kmalloc这些内容对于内存管理的一些细节上好像比较清楚了,但是内核是如何使用内存的还是有一些混淆。也产生了一些疑问,在内核中内存的正确打开方式是什么呢?内核地址空间划分首先我们需要搞情况内核的地址空间,不同地址空间......
  • beforeRouteEnter的执行时机以及其参数next的内部参数vm=>{}的执行实际
    beforeRouteEnter:(to,from,next)=>{console.log(1)next(vm=>{console.log(2)})}这里是先打印1,后打印21的时机是:to页面进入前,to页面的create都没执行2的时机是:to页面已经进入了,并且to页面的beforeMount执行后,mounted函数执行前,才去执行vm=>{},并打印2to.beforeCreate=>......
  • python查看占用系统内存
    importosimportpsutilinfo=psutil.virtual_memory()print(u'cpu个数:',psutil.cpu_count())print(u'电脑总内存:%.4fGB'%(info.total/1024/1024/1024))print(u'当前进程的内存使用:%.4fGB'%(psutil.Process(os.getpid()).memory_info().rs......