clickhouse 更多应用在 查询select  和写入insert  上。 提供部分更新操作,但相比其他各大数据库的更新操作来说,效果已经很好了,下面来详细介绍一下 更新这一块。

更新:

1.

update 及 delete 可以借用 alter table  进行单机表少量数据操作,(提示:truncate table  大量数据会造成卡顿,若在未完全清理情况下 ctrl+c 强行退出,则会造成表数据残缺,严重可致server 挂掉。),

2.

也可借用Mutations  进行多行更新删除操作。(根据where条件获取需要修改的分区,通过构建新分区替代老分区实现更新操作 ,但对于大分区,默认150G的数据更新可能会消耗大量资源)  此操作不受server重启影响,会执行至操作成功,可system.mutations 追踪,KILL MUTATION停止进程。

以上是针对单机表的更新操作,

3.

针对集群表可适用ReplacingMergeTree 进行后台更新处理,搭配主键使用。存在相同主键数据时 取 distributed(version) 中 version 更大的版本数据。默认为空即最后写入的数据,但实际实时数仓业务场景可能存在先到后到的问题,造成旧数据替换新数据的情况。因此version尽量选择 原始数据的初始时间,避免更新错误(若时间精度达到毫秒级,则取clickhouse最后写入的数据为最终结果)。若少量数据更新,也可使用optimize table  触发更新修复操作,更快查询更新结果。同时还有 select *from  final  的查询方法。此方法只为查询合并后的数据,但实际数据并没有merge更新。仅为结构查询使用。可能会影响查询性能。有待使用者自行测试。

提示:1.集群表分发策略要将指定数据分发至相同单机,最好不要rand()分发。2.更新方法有很多,业务不同,需要自测并找到最合适自己的。

此引擎默认后台更新,但官方提示,不要过于依赖此引擎。即后台更新存在异步性,不完整性。可能会造成一些误差和延迟。我这里每批数据大约会有极少量merge合并失败,即相同数据存储多条的情况,个人理解异步merge跟数据量有一定关系。当数据达到了指定大小时 会触发相同层tree data 会进行merge合并。叶子节点的数据层层向上合,至一定量停止。单批次写入数据量越多,触发merge几率也越大。但不能开多个线程,单条单条频繁查询,这样不仅不会触发频繁merge 且会占用server资源。造成卡顿。少批次大批量更适合clickhouse。

实际应用中,各自业务需求不同,用户需根据实际业务场景选择更合适的更新方法。

但总体上,clickhouse 因为存储上,批量数据直接写入存储文件的原因,主要核心是查询 ,而不是修改,尽量减少数据更改的操作。

ClickHouse 更新操作相关推荐

  1. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  2. 对Excel表的查询、插入和更新操作

    为什么80%的码农都做不了架构师?>>>    本代码主要实现对Excel表的查询.插入和更新操作,而特别指出:Excel表的删除语句操作不支持,只能用更新来替代. using Un ...

  3. Mybatis之批量更新操作

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis之批量更新操作 更新单条记录 1 UPDATE course SET name = 'course1' WHER ...

  4. java properties更新_对Java配置文件Properties的读取、写入与更新操作

    String filepath=System.getProperty("user.dir"); 对下面的程序很有用... /** * 实现对Java配置文件Properties的读 ...

  5. 事务处理操作(COMMIT,ROLLBACK)。复制表。更新操作UPDATE实际工作中一般都会有WHERE子句,否则更新全表会影响系统性能引发死机。...

    更新操作时两个会话(session)同时操作同一条记录时如果没有事务处理操作(COMMIT,ROLLBACK)则会导致死锁. 复制表:此方法Oracle特有 转载于:https://www.cnblo ...

  6. ThinkPHP如何判断一个更新操作是否成功

    ThinkPHP 内置的 save 方法用于向数据表更新数据,相当于 SQL 中的 UPDATE 行为. ThinkPHP save() 方法 ThinkPHP 中使用 save() 方法来更新数据库 ...

  7. MongoDB 文档的更新操作

    在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...

  8. 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行

    31Python MysSQL - mysql-connector驱动 使用pip命令安装mysql-connector: python -m pip install mysql-connector ...

  9. 批量插入以及数据存在重复就进行更新操作

    批量插入以及数据存在重复就进行更新操作 示例: /*** 批量更新** @param guiYangStationInfos*/ private void updateStationInfos(Str ...

最新文章

  1. 国外物联网平台初探(四):Ayla Networks
  2. 欢迎使用人体运动检测与跟踪CSDN-markdown编辑器
  3. hdu4284 dfs+floyd
  4. 计算机毕业生求职之路
  5. 剑网三《谢云流传》,展现的庞大世界观,背后的故事如何?
  6. vp翻N_VP刀叨叨:如何让G胖给你唱生日歌
  7. (转)JVM监控工具介绍
  8. 自学it18大数据笔记-第一阶段Java-day16-day17-day18-day19--day20-day21-day22——会持续更新...
  9. C++之指针探究(一):一级指针和二级指针
  10. c hello world
  11. 整理收藏-mysqldump导出数据库
  12. Feature Extraction
  13. STM32F103系列(二):如何使用串口下载程序
  14. win7网络无法连接其他计算机,Win7局域网不能访问如何解决?
  15. 大数据技术之Spark Streaming概述
  16. InputStream转byte[]
  17. 思科路由器配置enable password
  18. leveldb:Arena内存池
  19. 趋势科技Pc-cillin 2011网友使用体验
  20. 计算机组成原理作业1王诚,计算机组成原理 王诚 郭超峰 计算机组成第1章

热门文章

  1. 笨办法学Python第一天
  2. 干货|技术小白如何在45分钟内发行通证(TOKEN)并上线交易(附流程代码)
  3. 尚硅谷大数据视频_Shell视频教程
  4. O365邮箱添加日历权限 (Exchange类似)
  5. 前端实习面试题(自己当笔记用)
  6. 使用字符流,输出中文仍然乱码原因
  7. 惠普服务器找不到阵列,HP服务器RAID设置方法介绍
  8. P2P分布式资源存储项目设计收获
  9. linux命令vi编辑模式下小键盘不可用问题
  10. RK3399 点亮mipi屏和EDP屏