前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一项新特性提升MergeTree加载性能200倍

一项新特性提升MergeTree加载性能200倍

作者头像
Nauu
发布2022-08-30 15:24:53
6470
发布2022-08-30 15:24:53
举报

大家知道 MergeTree 是以分区目录的形式组织数据的,只要每写入一次数据,就会在磁盘上创建一个新分区文件(parts)。随着时间的推移,相同分区的文件会被合并成一个,关于这一块的逻辑可以看我的早期文章,《传送门》。

所以当运行一段时间以后,每张 MergeTree 的目录下就会有许多类似下面的分区文件目录:

代码语言:javascript
复制
query_log % ls -l
total 8
drwxr-xr-x  11 nauu  staff  352  9 18  2021 202109_1_102_22
drwxr-xr-x  11 nauu  staff  352 11 25  2021 202110_103_188_19
drwxr-xr-x  11 nauu  staff  352 11 28 00:56 202111_189_299_23
drwxr-xr-x  11 nauu  staff  352  2 16 21:36 202202_300_322_7
drwxr-xr-x  11 nauu  staff  352  3  5 14:39 202202_323_326_1
drwxr-xr-x  11 nauu  staff  352  3  5 15:14 202203_327_362_8
drwxr-xr-x   2 nauu  staff   64  9 17  2021 detached
-rw-r-----   1 nauu  staff    1  9 17  2021 format_version.txt

ClickHouse 服务重启的时候,就会逐个扫描 MergeTree 下面的这些分区目录,重新加载元数据。

所以在生产系统中, 如果 MergeTree 下面的分区目录很多,就会严重影响它的启动速度,这也是一直以来 ClickHouse 的一个痛点。

不过现在这种情况已经得到了解决,就是利用下面这项PR特性:

https://github.com/ClickHouse/ClickHouse/pull/32928

在 ClickHouse 的新版本中已经内嵌了 RocksDB,会将 MergeTree 的元数据信息缓存在 RocksDB 中,当 ClickHouse 服务启动的时候,会先从 RocksDB 加载元数据,当缓存失效的时候才会穿透到磁盘读取,所以性能大幅加强。

按照 PR 提交的测试结果,对于一张拥有 70W parts 的MergeTree 来说,加载性能从原来的 70分钟 提升到 20秒,可谓是质的飞跃了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ClickHouse的秘密基地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档