在 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. 想理解JVM看了这篇文章,就知道了!

    前言 ​ 本章节属于Java进阶系列,前面关于设计模式讲解完了,有兴趣的童鞋可以翻看之前的博文,后面会讲解JVM的优化,整个系列会完整的讲解整个java体系与生态相关的中间件知识.本次将对jvm有更深 ...

  2. integrator.setTimeout 设置一个超时时间,超过这个时间之后,扫描的 Activity 将会被 finish 。

    integrator.setTimeout 设置一个超时时间,超过这个时间之后,扫描的 Activity 将会被 finish . +++++++++++++++++++ 经查,没有这个功能

  3. 计划工程师dadafksjh

    Markdown常规语法 标题 # 代表一级标题 ## 代表二级标题 -- ####### 代表六级标题 一级标题 二级标题 三级标题 六级标题 列表 有序列表 1. 数字1 + . + 空格 无序列 ...

  4. MySQL中change与modify的用法与区别

    浅析MySQL中change与modify的区别   MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ...

  5. Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

  6. KNN算法基本原理与sklearn实现

    ''' KNN 近邻算法,有监督学习算法 用于分类和回归 思路: 1.在样本空间中查找 k 个最相似或者距离最近的样本 2.根据这 k 个最相似的样本对未知样本进行分类 步骤: 1.对数据进行预处理 ...

  7. PHP strtotime() 函数

    ------------恢复内容开始------------ 实例 将任何字符串的日期时间描述解析为 Unix 时间戳: <?php // 设置时区 date_default_timezone_ ...

  8. PHP ucwords() 函数

    实例 把每个单词的首字符转换为大写: <?php高佣联盟 www.cgewang.comecho ucwords("hello world");?> 定义和用法 ucw ...

  9. PDOStatement::fetch

    PDOStatement::fetch — 从结果集中获取下一行(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 mixed PDOStatement:: ...

  10. Python语言及其应用 中文pdf完整版|网盘下载内附提取码

    点击此处下载提取码:7cvm <Python语言及其应用>介绍Python 语言的基础知识及其在各个领域的具体应用,基于新版本3.x.书中首先介绍了Python 语言的一些基本知识,然后介 ...