ClickHouse 25.7 版本发布说明

图片

本文字数:12937;估计阅读时间:33 分钟

作者:ClickHouse Team

本文在公众号【ClickHouseInc】首发

图片

又到了每月版本发布的时间!

发布概要

本次ClickHouse 25.6 发布包含 27 项新功能 🌸 26 项性能优化 🍦 以及 98 个缺陷修复 🐞。

本次更新中,我们要特别欢迎所有参与 25.7 版本开发的新贡献者!ClickHouse 社区的不断壮大令人深受感动,我们始终感谢每一位推动 ClickHouse 走向更广泛应用的贡献者。

以下是本次新增的贡献者名单:

Alon Tal、Andrey Volkov、Damian Maslanka、Diskein、Dominic Tran、Fgrtue、H0uston、HumanUser、Ilya fanyShu、Joshie、Mishmish Dev、Mithun P、Oleg Doronin、Paul Lamb、Rafael Roquetto、Ronald Wind、Shiv、Shivji Kumar Jha、Surya Kant Ranjan、Ville Ojamo、Vlad Buyval、Xander Garbett、Yanghong Zhong、ddavid、e-mhui、f2quantum、jemmix、kirillgarbar、lan、wh201906、xander、yahoNanJing、yangjiang、yangzhong、思维

轻量级更新

由 Anton Popov 开发

ClickHouse 现在支持 可大规模执行的标准 SQL UPDATE 语句,由全新的轻量级 patch-part 机制驱动。与传统需要重写整列数据的变更操作不同,这种方式只会写入很小的补丁部分(patch parts),能够即时生效,并且对查询性能几乎没有影响。

工作原理

补丁部分继承了 专用引擎(https://clickhouse.com/blog/updates-in-clickhouse-1-purpose-built-engines)(如 ReplacingMergeTree)背后的相同原理,但以完全通用的方式,通过 标准 SQL(https://www.w3schools.com/sql/sql_update.asp) 暴露给用户:

UPDATE orders
SET discount = 0.2
WHERE quantity >= 40;
  • 插入操作非常快速(https://clickhouse.com/blog/updates-in-clickhouse-1-purpose-built-engines#inserts-are-so-fast-we-turned-updates-into-inserts)。

  • 合并是持续进行的(https://clickhouse.com/blog/updates-in-clickhouse-1-purpose-built-engines#merges-are-fast-thanks-to-sorted-parts)。

  • 数据部分是不可变且有序的(https://clickhouse.com/blog/updates-in-clickhouse-1-purpose-built-engines#inserts-create-sorted-and-immutable-parts)。

因此,ClickHouse 不会去定位并直接修改行,而是插入一个紧凑的补丁部分,用于在合并过程中修补数据部分,仅应用更改过的数据。

图片

合并任务原本就在后台运行,现在我们让它在几乎零额外开销的情况下多做一步:应用补丁部分,在合并数据时高效更新基础数据。

更新可以即时反映出来,尚未合并的补丁部分会被匹配,并且会在每个 数据流(https://clickhouse.com/docs/optimize/query-parallelism#distributing-work-across-processing-lanes) 的各个数据范围内独立应用,以精确且有针对性的方式确保更新正确执行,同时不影响并行处理。

图片

这让声明式更新在我们的基准测试中最高可比以往快 1,000 倍(https://clickhouse.com/blog/updates-in-clickhouse-3-benchmarks#time-until-bulk-updates-are-visible-to-queries),并且在合并前对查询的影响几乎可以忽略。

无论是更新一行还是一百万行,现在都能做到快速、高效,并且完全是声明式的。

DELETE 是 轻量级 羽量级

对于使用 标准 SQL 语法(https://www.w3schools.com/sql/sql_delete.asp) 的 DELETE 操作,例如:

DELETE FROM orders WHERE order_id = 1001 AND item_id = 'mouse';

ClickHouse 只需创建一个补丁部分,将被删除行的 _row_exists 设置为 0。然后,这些行会在下一次后台合并时被移除。

图片

快速 UPDATE 的内部机制

想更深入地了解?可以阅读我们关于 ClickHouse 快速 UPDATE 的三篇博客系列:

  • 第 1 篇:专用引擎(https://clickhouse.com/blog/updates-in-clickhouse-1-purpose-built-engines)  

  介绍 ClickHouse 如何利用基于插入的引擎(ReplacingMergeTree、CollapsingMergeTree、CoalescingMergeTree)来规避缓慢的行级更新。

  • 第 2 篇:声明式 SQL 风格 UPDATE(https://staging.clickhouse.com/blog/updates-in-clickhouse-2-sql-style-updates)  

    探讨我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值