clickhouse轻量级更新 - 若

news/2025/9/24 11:39:10/文章来源:https://www.cnblogs.com/zhanchenjin/p/19108860

轻量级更新(Lightweight Updates)是ClickHouse中的一个重要特性,让我详细解释一下:

什么是轻量级更新

轻量级更新是ClickHouse提供的一种高效的UPDATE机制,它允许在不重写整个数据块的情况下更新数据。

传统更新 vs 轻量级更新

传统更新(Heavy Updates)

UPDATE table SET column = 'new_value' WHERE condition;

特点:

  • 需要重写包含目标行的整个数据块
  • 性能开销大,特别是在大表上
  • 可能导致大量I/O操作
  • 影响其他数据的存储位置

轻量级更新(Lightweight Updates)

UPDATE table SET column = 'new_value' WHERE condition;

特点:

  • 只重写实际发生变化的数据行
  • 性能开销小,速度更快
  • 减少I/O操作
  • 保持数据块的其他部分不变

工作原理

1. 数据块结构

原始数据块: [Row1, Row2, Row3, Row4, Row5]↓ (更新Row3)
更新后:     [Row1, Row2, Row3', Row4, Row5]

2. 版本控制机制

  • 使用内部的_block_number来跟踪数据变化
  • 每个数据块都有唯一的版本标识
  • 更新时只标记变化的数据行

3. 查询处理

  • 查询时自动合并原始数据和更新数据
  • 对用户透明,查询结果包含最新数据
  • 后台异步处理数据合并

启用轻量级更新的条件

1. 表设置要求

-- 方法1:创建表时设置
CREATE TABLE example (id UInt64,name String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS enable_block_number_column = 1, enable_block_offset_column = 1;-- 方法2:修改现有表设置
ALTER TABLE example MODIFY SETTING enable_lightweight_updates = 1;

2. 物化列支持

-- 添加必要的物化列
ALTER TABLE example ADD COLUMN _block_number UInt64 MATERIALIZED _part_offset;

轻量级更新的优势

1. 性能优势

  • 更新速度快:只处理变化的数据
  • 减少I/O:避免重写整个数据块
  • 降低CPU使用:减少数据处理量

2. 存储优势

  • 空间效率:不重复存储未变化的数据
  • 索引友好:保持索引结构稳定
  • 压缩优化:不影响数据压缩效果

3. 并发优势

  • 减少锁竞争:只锁定变化的数据行
  • 提高并发性:多个更新操作可以并行执行
  • 降低冲突:减少数据块级别的冲突

适用场景

1. 状态更新

-- 更新任务状态
UPDATE block_tasks SET status = 'finished' WHERE start_block = 12345;

2. 实时数据修正

-- 修正错误数据
UPDATE transactions SET value = 100.5 WHERE tx_hash = '0x123...';

3. 批量状态变更

-- 批量更新状态
UPDATE accounts SET balance = balance + 100 WHERE address IN ('0x1', '0x2');

限制和注意事项

1. 版本要求

  • 需要ClickHouse 24.x或更高版本
  • 某些版本可能不支持此功能

2. 表结构要求

  • 需要特定的表设置
  • 可能需要物化列支持

3. 性能考虑

  • 复杂WHERE条件可能影响性能
  • 大量并发更新可能产生冲突

实际应用示例

1. 区块链数据更新

-- 更新区块任务状态
UPDATE block_tasks SET status = 'finished',completed_at = now()
WHERE start_block = 12345 AND end_block = 12355;

2. 账户余额更新

-- 更新账户余额
UPDATE accounts SET balance = balance + 100.5,updated_at = now()
WHERE address = '0x1234567890abcdef';

总结

轻量级更新是ClickHouse提供的一种高效的UPDATE机制,它通过只更新变化的数据行来提升性能。对于Web3数据收集项目来说,轻量级更新特别适用于:

  1. 任务状态管理:频繁更新block_tasks的状态
  2. 数据修正:实时修正错误或过时的数据
  3. 状态同步:保持数据状态的一致性

通过合理使用轻量级更新,可以显著提升数据更新的性能和效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西电PCB设计指南第3章学习笔记

西电PCB设计指南第3章学习笔记 三、PCB的设计与规范画图前的准备确定外轮廓(在机械层核对尺寸,安装孔位,定义PCB边界轮廓)设置layerstack(节点厚度和属性)话说我好像安装了专门算这个的软件?嘿嘿嘿:happy:那么为…

Vitrualbox、kali、metaspolitable2下载安装

太多资源看不过眼,整理了几个下载比较快、安装教程比较实用的链接。 这里下的是Virtualbox7.2.2和7.2.2版本的扩展包、kali2025.3和metasplotable2,这里直接用的最新的kali和最新稳定版本的Virtualbox版本。 注意下载…

有域名了如何建网站ftp服务器上传不了wordpress

题解: 我发现拉格朗日乘数法真是个好东西。。 我是不会说我数学竞赛求最值都是用这个东西的 由于我不太会打那个符号就用li代表通常偏导数中的lanmuda 。。。 这题里化简一下就可以得到 2 li * ki * ​(vi​−vi′​)* vi^2​1 然后一旦li确定 我们会发现这个三次函…

LazyLLM端到端实战:用RAG+Agent实现自动出题与学习计划的个性化学习助手智能体

1. 为什么做这个学习助手Agent? 最近,我在写一本关于Git和开源的技术书,这本书未来有个推广方向,就是面向高校作为教材使用。所以我需要在每一章结束在之后,设计若干道练习题,然后还需要为这本书编写配套的PPT以…

补充图

最小生成树(K算法和P算法)(1)K 算法(每次找最小边,判断是否存在环)TIPS:使用并查集实现合并、查询等操作。(常数级别),这里暂未使用。(2)P 算法

域名+邮件推送+事件总线=实现每天定时邮件!

需求:十二点之前我就要睡觉了,我希望给自己一个提醒,但是这个提醒不能是闹钟,因为我一旦在闹钟之前睡去,这闹钟反而要一直响个不停了。 根据这个需求,我盯上了自动邮件,发现目前市场上的自动邮件服务都是付费居…

llm入门环境

Jupyter Notebook安装 官网 https://jupyter.org/install 命令安装 $ pip install jupyterlab 启动 $ jupyter-lab Langchain安装 命令 $ pip install langchain$ conda inatall langchain -c conda-forge 也可以使用V…

手机网站 微信分享建设酒店网站ppt模板

ctrl shift P 选择 go install/update tools,下载go tools 报错, 提升dial err。 将GOPROXY 和 GOSUMDB 按照如下配置,重启IDE即可成功下载 set GOPROXYhttps://goproxy.cn set GOSUMDBoff

网站开发排行零基础学jsp网站开发

google浏览器是不能够安装的除非有v*p*n() Firefox浏览器可以安装js脚本 推荐使用 1 google 扩展 IDMan628 扩展程序里面加 IDMGCExt.crx 2 扩展Tampermonkey 加Tampermonkey.crx 3 点击Tampermonkey 的仪表盘 右上角加按钮 百度网盘直接下载助手…

2017网站开发工程师php网站后台入口

rocketmq默认就是可以批量消费的,但需要设置多个参数一起配合。 我们只需要知道他是怎么消费的,就可以很精准的设置他的批量消费参数。 我们看看DefaultMQPushConsumer源码中的这几个参数: /*** 消费消息线程,最小数目*/private …

湖南网站建设开发免费做产品宣传的网站

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

网站seo快速排名优化的软件建筑信息平台网

1. 计算机视频重要分类 计算机视觉的重要任务可以大致分为以下几类: 1. 图像分类(Image Classification) 识别图像属于哪个类别,例如猫、狗、汽车等。 应用场景:物品识别、人脸识别、医疗影像分类。代表模型&#…

深入解析:【C语言代码】数组排序

深入解析:【C语言代码】数组排序2025-09-24 11:24 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

SOOMAL 降噪数据表

各型号耳机 降噪情况对比参考你要保守你心,胜过保守一切。本文来自博客园,作者:刘俊涛的博客,转载请注明原文链接:https://www.cnblogs.com/lovebing/p/19108833

案例分享|借助IronPDF IronOCR,打造医疗等行业的智能化解决方案

作为一家注重效率与成本优化的企业,DITS 在多个项目中引入了 Iron Software 的开发工具(尤其是 IronPDF 和 IronOCR),帮助客户大幅降低成本、减少人工操作、提高合规性。作为一家注重效率与成本优化的企业,DITS 在…

外贸网站是怎么做的昆山做网站费用

Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地…

ClickHouse UPDATE 操作问题解决方案 - 若

ClickHouse UPDATE 操作问题解决方案 问题背景 在使用ClickHouse进行数据更新操作时,遇到了以下错误:Lightweight updates are not supported 2025.09.24 11:08:51.283185 [ 70414 ] {09f4305c-14c5-4d63-a251-3179f…

怎么建设淘客自己的网站、百度推广网页制作

目录😋 任务描述 相关知识 1. 选择结构基本概念 2. 主要语句类型​(if、if-else、switch) 3. 跃迁函数中变量的取值范围 4. 计算阶跃函数的值 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务:输入x的值&#x…

做网站开视频网站wordpress自动推送token

一、什么事Http长连接:在网上有很多很多关于Http长连接的文章,但是我看了很多都看不懂。自己总结的所谓的http长连接就是在一请求一个页面后,在服务器端不断开http连接,而是通过response一直在定时的往页面客户端刷新数据。 二、s…