在 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. 21天学通C++(C++程序的组成部分)

    C++程序被组织成类,而类由成员函数和成员变量组成. 本章学习: 1)C++程序的组成部分. 2)各部分如何协同工作. 3)函数及其用途. 4)基本输入输出操作. C++程序划分为两个部分,以#大头的 ...

  2. 每日一道 LeetCode (1):两数之和

    引言 前段时间看到一篇刷 LeetCode 的文章,感触很深,我本身自己上大学的时候,没怎么研究过算法这一方面,导致自己直到现在算法都不咋地. 一直有心想填补下自己的这个短板,实际上又一直给自己找理由 ...

  3. Day02_IP地址详解&进制转换&DOS基本命令与批处理

    学于千峰教育开源课程 感谢 千峰教育官网 b站在线视频 IP地址详解 一.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的局域网的设 ...

  4. Pandas 复习2

    import pandas as pd import numpy as np food_info = pd.read_csv('food_info.csv') 1.处理缺失值(可使用平均数,众数填充) ...

  5. PHP MySQL Delete删除数据库中的数据

    PHP MySQL Delete DELETE 语句用于从数据库表中删除行. 删除数据库中的数据 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_na ...

  6. MediaDevices.getUserMedia()

    MediaDevices.getUserMedia() 会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道.此流可以包含一个视频轨道(来自硬件或 ...

  7. bzoj 3436小K的农场

    3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2327 Solved: 1105 [Submit][Status][Discu ...

  8. Docker学习日记-安装Docker

    Docker是什么: 简单理解就是基于go语言开发的开源的应用容器引擎. 对进程进行封装隔离,属于操作系统层面的虚拟化技术. Docker的优势: 1.更高效的利用系统资源 2.更快速的启动时间 3. ...

  9. JDBC报错:Cannot find class: com.mysql.jdbc.Driver

    连接数据库的jar出现异常(通常报错:Cannot find class:com.mysql.jdbc.Drive), 问题:Connector的jar已经导入,还是出现 Cause: java.sq ...

  10. CentOS 7.0防火墙设置

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.1.关闭firewall:systemctl stop firewalld.servicesystemctl ...