这篇会系统阐述 TCHouse-X 的数据更新能力,涵盖核心原理、更新/删除方式及性能实践教程。
一、核心原理:MVCC 多版本并发控制
TCHouse-X 采用 MVCC (Multi-Version Concurrency Control) 机制来管理高并发下的数据读写。
·原子性保障: 每个写入操作(INSERT、UPDATE、DELETE)都被封装在一个事务中,确保数据要么全部写入成功,要么完全回滚。
·版本排序: 系统为每次提交分配递增的版本号。当主键发生冲突时,版本号最高(即最新)的数据将作为查询可见的最终结果,旧版本数据会在后台异步清理(Compaction)。
二、主键表数据更新方式
对于主键表,TCHouse-X 提供了两种主要的更新路径,分别对应不同的业务负载:
三、路径 A:高性能导入更新 (UPSERT) —— 推荐方式
这是实现高频、高并发数据同步的最佳路径。INSERT INTO 语句天然具备 UPSERT 语义。
·逻辑:
·主键存在: 以新行覆盖旧行。
·主键不存在: 插入新行。
·适用场景: 实时流数据同步(如 Flink/Spark 写入)、CDC 数据镜像。
四、路径 B:标准 SQL DML (UPDATE)
支持标准的 SQL UPDATE 语法,提供更灵活的业务逻辑表达能力。
·逻辑: 系统先根据 WHERE 子句扫描并定位满足条件的数据,计算更新值后重新写回。
·适用场景: 修正历史数据、基于复杂关联(Join)条件的批量更新。
·限制: 由于涉及扫描与重写过程,适合低频、批量任务,不建议用于高频行级更新。
五、事务 (Transaction) 机制
事务是 TCHouse-X 保证数据一致性的最小工作单元。
·隐式事务: 每个 DML 语句在执行开始时自动开启事务,执行成功则自动提交(Commit),失败则自动回滚(Rollback)。
·隔离性: 查询操作始终读取已提交的最新版本,不会被正在进行的写入操作阻塞。
六、实践教程
| 优化维度 | 建议方案 |
| 写入频率 | 避免“单条频繁提交”,建议采用小批量(Batch)写入,每秒提交 1-5 次为宜。 |
| 主键设计 | 主键字段应尽可能精简,推荐使用数值类型以提升版本比对效率。 |
| 谓词下推 | 在执行 UPDATE 或 DELETE 时,尽量带上分区键过滤条件,减小扫描范围。 |