码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一篇文章学会调优 ClickHouse


    前言

    本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

    本专栏目录结构和参考文献请见大数据技术体系


    1. 配置优化

    ClickHouse 的通用优化配置如下表所示,大部分配置需要根据线上实际楼况进行优化,具体需要优化的配置可参考官方文档:

    https://clickhouse.tech/docs/en/operations/settings/query-complexity

    https://clickhouse.tech/docs/en/operations/settings/

    配置名推荐配置说明
    max_server_memory_usage_to_ram_ratio机器内存的 90%占用物理机内存比例
    max_memory_usage根据单查询内存使用量和并发合理调整单查询最大使用内存量
    background_pool_sizeCPU 核心数的两倍后台 Merge 操作的线程数
    max_parts_in_total1000000单机最大part个数
    parts_ to_delay_insert3000单个分区下的活跃 part 数超过该值后,会延迟新的写人 parts_to_throw_insert
    old_parts_lifetime0表示立即删除旧的part, 根据业务需求调整后台合并和数据过期后旧的 part 保留的时间
    max_ concurrent_queries根据机器资源调整某个 MergeTree 的最大查询数
    max_bytes_before_external_group_by推荐开启,具体值为 max_memory_usage 的一半Group by 过程允许数据落盘

    2. 查询优化

    用户在查询数据时,可以参考如下几点对 SQL 进行优化:

    1. 通过 explain 命令来查看执行计划,确认查询计划是否合理。
    2. 先过滤数据(减少I/O)再进行 join 等操作。
    3. join 操作,大表在前,小表在后。
    4. 建议使用大宽表进行查询,不要进行多次 join。
    5. 业务允许时,可以使用近似函数代替精确函数,例如用 uniq 代替 count distinct
    6. 两张分布式表进行 join 时,可以在写人数据前,按照相同规则分片(shard)到相同节点。
    7. 子查询为分布式表时,需要使用 GLOBAL 关键宇。

    3. 表相关优化

    用户在创建表时,可以参考如下几点:

    1. 尽量不用 string 类型的字段。
    2. 使用默认值代替空值。
    3. 能进行分区的事实 表尽量进行分区。
    4. 可以使用二级索引。
    5. 业务允许的价况下配器 TTL,删除不必要的数据。
    6. 尽量做 1000 条以上的数据写人,诚少后台 Merge 压力。
  • 相关阅读:
    leetcode 729. 我的日程安排表 I
    美国网站服务器SSL证书介绍
    报错 - Junit 单元测试@Before没有执行
    ps命令应用(查看进程)
    “链圈”十年反思
    聊聊 Redis 是如何进行请求处理
    KingbaseES V8 GIS数据迁移方案(2. Kingbase GIS能力介绍)
    【Linux】进程控制
    访问链表中的某个元素(快慢指针)
    如何快速制作令人惊叹的长图海报
  • 原文地址:https://blog.csdn.net/Shockang/article/details/128179495
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号