在 ClickHouse 进程中,CPU 的主频越高越好,通常建议使用 32 以上的机型,内存越大越好,一般每个线程分配 2GB 内存差不多就够了,当然越大的内存加速就会越明显。
磁盘通常普通的 HDD 磁盘都可以,RAID 方面 RAID-5、RAID-10 或者 RAID-50 都可以。如果查询数据量大、延迟要求比较低的话,使用 SSD/NVME 这些高速设备是最好的。
因为 ZK 节点不能混布,如果混布会出现很多的问题,比如相互影响导致集群无法工作,如果数据量在 TB 级别的时候,会选择一个 SSD 盘之类的高速设备。
我们整理了一些基础的参数:
lmax_threads: 查询使用的线程数量,默认为核数一半;
lmax_memory_usage: 单次查询允许使用的内存量;
lmax_memory_usage_for_all_users:ClickHouse 进程允许使用的内存量, 通常需要考虑为 OS 预留内存;
lmax_bytes_before_external_group_by: GROUP BY 操作使用内存超过该阈值后, 数据会写入磁盘,建议设置为 max_memory_usage/2;
lmax_concurrent_queries: 最大并发数限制;
lmax_bytes_before_external_sort: order by 排序溢写磁盘阈值;
lbackground_pool_size: 后台线程组 。
在使用层面也有一些建议:
避免全表扫描
-查询是需要指定分区
-避免使用 SELECT *
-GROUP BY 需要指定 LIMIT 子句
常用请求使用物化视图预计算, 例如监控⻚面,报表大盘等
关联查询时慎用 JOIN,可以考虑优先使用 IN 解决
JOIN 查询有损性能
-小表在右
-减少参与 JOIN 运算的数据量 (无谓词下推)
数据写入
-避免小批次写入
-批量写入数据中不宜包含过多分区
-适当调大后台 merge 线程数 background_pool_size
分布式表提供查询,代理 + 本地表提供数据写入
合理规划ZK集群配置以及参数调整建议
-数据规模在 TB 级别,建议使用 SSD 磁盘
-开启自动清理数据功能
为用户设置配额
下面我们讲一下查询方面的优化。最简单的来说,对于一条 SQL 语句,我们要看它的延迟,如果延迟的结果不一样,我们就会通过日志和其他的方式来看,哪些数据被扫描了、扫描了多少数据、用到内存多少、有没有写出到磁盘、使用了哪些条件,甚至可以查看执行计划,这些就是查询优化常规的步骤。
最新版本的 ClickHouse,已经提供了 explain 命令,可以看整个查询的执行计划,这样查询语句合理不合理都可以再次调整,比以前方便很多,以前通过日志后台看,这对很多的其他开发者是不太友好的。

ClickHouse 参数配置的更多相关文章

  1. 转:浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置

    为什么要并发处理 以Apache为代表的web服务器中,如果不支持并发,则在一个客户端连接的时候,如果该客户端的任务没有处理完,其他连接的客户端将会一直处于等待状态,这事不可想象的,好像没有为什么要不 ...

  2. Spark on Yarn:任务提交参数配置

    当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行.Spark可以使得多个Tasks在同一个容器里面运行. 以下参数配置为例子: spark-submit -- ...

  3. Production环境中iptables常用参数配置

    production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...

  4. Unity3D安卓打包参数配置与兼容性的关系分析

    前言 在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象.面对这种情况,我们可以调节相关的参数来提高兼容性. 为了了解在打包时候 ...

  5. 教你如何利用分布式的思想处理集群的参数配置信息——spring的configurer妙用

    引言 最近LZ的技术博文数量直线下降,实在是非常抱歉,之前LZ曾信誓旦旦的说一定要把<深入理解计算机系统>写完,现在看来,LZ似乎是在打自己脸了.尽管LZ内心一直没放弃,但从现状来看,需要 ...

  6. IIS 7.5 高并发参数配置

    IIS 7.5 高并发参数配置 由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,对于高并发请求,参照文档设置10万并发 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为 ...

  7. Sqlserver推荐参数配置及日志收缩问题

    最近不定期有项目反馈周期性的系统整体性能下降情况,经分析存在因数据库环境.参数配置不佳造成的.比如,sqlserver日志文件缺省按百分比增长,当日志文件已经比较大时,每次扩展时耗时较长,系统整体卡顿 ...

  8. [转载]SOAPUI压力测试的参数配置

    原文地址:SOAPUI压力测试的参数配置作者:goooooodlife The different Load Strategies available in soapUI and soapUI Pro ...

  9. Mongodb Java Driver 参数配置解析

    要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...

随机推荐

  1. [leetcode/lintcode 题解] 一致性哈希 II · Consistent Hashing II

    [题目描述] 在 Consistent Hashing I 中我们介绍了一个比较简单的一致性哈希算法,这个简单的版本有两个缺陷: 增加一台机器之后,数据全部从其中一台机器过来,这一台机器的读负载过大, ...

  2. 如何消灭飞机的“黑色十分钟”,AI来帮忙

    近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”.例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照片的美感 ...

  3. Shell变量的作用域:Shell全局变量、环境变量和局部变量

    Shell 变量的作用域(Scope),就是 Shell 变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他 ...

  4. 使用faker生成测试数据

    需要先安装faker模块,pip install faker 导入模块中的Faker类:from faker import Faker 实例化faker = Faker() print('姓名相关') ...

  5. Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击

    为什么要配置HTTP响应头? 不知道各位有没有被各类XSS攻击.点击劫持 (ClickJacking. frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面.为此一直都在搜寻相关防 ...

  6. UltraISO制作系统安装盘

    转载自: 原文链接 本文介绍使用UltraISO(软碟通)制作U盘启动来安装Win10系统,会装win10,其他的系统也大同小异,适用于当原系统损坏.崩溃.升级异常导致系统不能开机时重装,相对比< ...

  7. Python for循环语句

    Python for 循环语句:遍历任何序列的项目,可以是字符串.列表.元组.字典.集合对象. 流程图: 第一种: ''' for 迭代对象 in 序列: 代码块(一行语句或多行代码) ''' 第二种 ...

  8. 自制廉价的LED+LCD型投影仪

    文档标识符:PROJECTOR_T-D-P6 作者:DLHC 最后修改日期:2020.7.30 本文链接:https://www.cnblogs.com/DLHC-TECH/p/PROJECTOR_T ...

  9. Hexo 静态博客指南:建站教程(上)

    本文最初发布于我的个人博客Bambrow's Blog,采用 BY-NC-SA 许可协议,转载请注明出处.若有后续更新,将更新于原博客.欢迎去我的博客阅读更多文章! 本文详细记录一下站点建立过程,以便 ...

  10. Python File seek() 方法

    概述 seek() 方法用于移动文件读取指针到指定位置.高佣联盟 www.cgewang.com 语法 seek() 方法语法如下: fileObject.seek(offset[, whence]) ...