1、ClickHouse知识讲解,目录、认识 ClickHouse、常ClickHouse实时分析场景三、ClickHouse性能调优四、ClickHouse在公司的现状与规划,ClickHouse简介,完备的DBMS功能DDL(数据定义语),DML(数据操作语)权限控制数据备份与恢复分布式管理,1.,列式存储与数据压缩极地节约了IO带宽压缩(持LZ4,ZSTD),2.,向量化执引擎分布式计算多核并计算向量化执与SIMD动态代码成,3.,SQL持对户友好的SQL语法内置功能全的分析统计函数丰富的数据结构持,字典json,array,bitmap等,4.,数据存储管理数据存储,不依赖其他组件主键索引
2、/级索引数据集分(sharding)数据分区(partition)数据容灾和TTL持,5.,性能卓越论是查询还是写性能极其卓越,6.,对于OLAP环境行式数据库与列式数据库之查询对比,行式看到差别了么?下面将详细介绍为什么会发生这种情况,列式,输入/输出,针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取100列中的5列,这将帮助你最少减少20倍的I/O消耗。由于数据总是打包成批量读取的,所以压缩是非常容易的。同时数据按列分别存储这也更容易压缩。这进一步降低了I/O的体积。由于I/O的降低,这将帮助更多的数据被系统缓存。,CPU由于执行一
3、个查询需要处理大量的行,因此在整个向量上执行所有操作将比在每一行上执行所有操作更加高效。同时这将有助于实现一个几乎没有调用成本的查询引擎。如果你不这样做,使用任何一个机械硬盘,查询引擎都不可避免的停止CPU进行等待。所以,在数据按列存储并且按列执行是很有意义的。,Clickhouse集群现状以及业务价值,Clickhouse,ClickHouse集群现状,业务价值,集群规模可近万核,PB级存储、万亿级别记录量。每天过千亿数据落地库保存(实时流、离线中间表等约 700张表)。,性能指标查询千亿、万亿流的请求可在数秒内完成。,实时性复杂交互分析秒级完成(如分版本、分平台DAU,营收及其他多径业务指
4、标)。,易性利Superset可主DIY各类报表,当前 SuperSet过万图表中,超半由产品、研发、运营、研究员、财务等数据同学创建。,常ClickHouse实时分析场景举例,场景1:物化视图应:数据摄,常ClickHouse实时分析场景举例,场景1:物化视图应:数据摄,常ClickHouse实时分析场景举例,场景1:物化视图应:数据摄,1、创建Kafka表引擎,监听数据,2、创建标表,存储数据,3、创建物化视图,摄取数据,常ClickHouse实时分析场景举例,Partition 1,Partition 2,Partition 3,SHARD 1,SHARD 2,SHARD 3,场景1:物
5、化视图应:数据摄,常ClickHouse实时分析场景举例,场景2:ClickHouse在实时更新场景中的应假设某APP需要在线向户下发通知,如果户读取消息后,状态回传后台,并标记已读取。,数据实时更新!查询某户未读取信息,常ClickHouse实时分析场景举例,场景2:ClickHouse在实时更新场景中的应案1:ReplacingMergeTree,1、创建明细表,2、插入模拟数据,常ClickHouse实时分析场景举例,3、插模拟数据,模拟户APP应答,4、查看数据,5、查看户(uid=520)未读数据,常ClickHouse实时分析场景举例,1、查看户(uid=520)未读数据,场景2:
6、ClickHouse在实时更新场景中的应案2:Aggregate Functions,常ClickHouse实时分析场景举例,场景2:ClickHouse在实时更新场景中的应案3:AggregatingMergeTree,1、聚合表引擎,2、准备数据,常ClickHouse实时分析场景举例,3、查看户(uid=520)未读数据,常ClickHouse实时分析场景举例,场景3:AggregatingMergeTree 引擎+物化视图应,1、明细表,2、创建聚合表,3、创建物化视图,常ClickHouse实时分析场景举例,4、导存量数据,6、导增量数据,5、查询聚合表中数据,常ClickHouse
7、实时分析场景举例,7、导存量数据,常ClickHouse实时分析场景举例,场景4:Aggregate Function 应举例(bitmap系列)案例1:户留存计算Bitmap 在处理户/会员统计,告投放/户画像等领域有常便捷的应。,1、创建明细表,2、插模拟数据,常ClickHouse实时分析场景举例,表JOIN,COUNT DISTINCT都很慢,并且容易OOM,举个例,3、查询户存留(常规法),常ClickHouse实时分析场景举例,通过BITMAP的位运算,对规模户(亿级),位运算秒出结果,4、使聚合函数bitmap案,创建聚合表,5、使聚合函数bitmap案,创建聚合表,6、导历史数
8、,7、查询聚合表数据,常ClickHouse实时分析场景举例,优势:1.计算量降低,速度快,资源消耗,8、查使聚合函数,通过BITMAP的位运算,对规模户(亿级),位运算秒出结果,常ClickHouse实时分析场景举例,场景4:Aggregate Function 应举例(bitmap系列)案例2:告投放/户画像应,1、创建标签表,常ClickHouse实时分析场景举例,2、创建户属性表,常ClickHouse实时分析场景举例,3、创建物化视图,动聚合数据,常ClickHouse实时分析场景举例,4、插模拟数据,4千万条,常ClickHouse实时分析场景举例,5、观察标签数据,常ClickH
9、ouse实时分析场景举例,优势:(性别=AND 职业=程师)OR(17 40000),6、查询,按条件圈户,常ClickHouse实时分析场景举例,ClickHouse性能调优,INSERT操作是原的SELECT操作异常快持主索引/级索引INSERT/SELECT相互不影响后台合并数据主键不唯,MergeTree engines,ClickHouse性能调优,CREATE,SELECT,INSERT,表数据录,数据目录,级索引件,detached录,Format Version,Parts 录,主索引件,MARK件,数据件,ClickHouse性能调优,primary.idx,数据索引,use
10、r_id.mrk2,user_id.bin,(user_id,when),65234,131614,65536,ClickHouse性能调优,配置选型,数据节点,CPU:主频越越好,通常也建议配置32cores以上的机型内存:当然内存越越好,Page/view22/M02/14/0C/wKh2D2JSSxiAEFoKACfSW0Ns8ZK节点,ClickHouse性能调优,基础参数,max_threads:查询使的线程数量,默认为核数半max_memory_usage:单次查询允许使的内存量max_memory_usage_for_all_users:clickhouse进程允许使的内存量,通
11、常需要考虑为OS预留内存max_bytes_before_external_group_by:GROUP BY 操作使内存超过该阈值后,数据会写磁盘,建议设置为max_memory_usage/2max_concurrent_queries:最并发数限制 max_bytes_before_external_sort:order by 排序溢写磁盘阈值 background_pool_size:后台线程组,ClickHouse性能调优,查询优化,Latency,Rows/Bytesscanned Memory used,Indices read Marks read Parts readExecution order(pipeline),ClickHouse性能调优,查询优化,EXPLAIN AST|SYNTAX|PLAN|PIPELINEsettings=value,SELECT FORMAT,Lets EXPLAIN.,ClickHouse性能调优,ClickHouse在公司的现状与规划,1、现已搭建一个一主双从的clickhouse集群,已做ZooKeeper同步2、智慧工业的测试数据测试完毕,性能提升三倍3、后续若大幅度迁移泽会继续增加分片和副本,欢迎讨论ClickHouse相关问题,