特性描述
原生 ClickHouse 的 MergeTree 系列引擎数据删除操作需要重建底层数据,操作执行代价高,无法在生产环境频繁使用。
LibraDB 提供了轻量级的标记删除,无需重建底层数据,查询时根据删除的 bitmap 快速过滤删除数据,在基本不影响查询效率的情况下,大量降低了删除操作的执行代价。
轻量级删除语句:
ALTER TABLE [db.]table LIGHT WEIGHT DELETE WHERE filter_expr;
使用限制
需要使用轻量级删除特性的 MergeTree 系列引擎在建表时需要增加
allow_fast_delete_column = 1
参数(默认 CDC 同步的表已经添加此参数)。使用说明
以下将构造数据测试轻量级删除和原生 ClickHouse
DELETE
的删除性能。创建库表
1. 创建数据库。n
2. 创建表 t_1 时增加
allow_fast_delete_column = 1
参数。n
3. 创建随机表。n
4. 创建表 t_2 时不增加
allow_fast_delete_column = 1
参数。n
5. 分别将随机表中的数据写入 t_1 和 t_2 中。n
删除数据
轻量级删除:删除 t_1 中数据。
ALTER TABLE [db.]table LIGHT WEIGHT DELETE WHERE filter_expr;
示例:n
原生 Clickhouse 删除:删除 t_2 中数据。
ALTER TABLE [db.]table DELETE WHERE filter_expr;
示例:n
测试结果:轻量级删除耗时0.296sec,原生 ClickHouse
DELETE
语句删除耗时2.473sec,整体性能提升8倍以上。