LastRow Merge Engine

本文介绍合并引擎(Merge Engine )中的LastRow Merge Engine用法。

LastRow Merge Engine说明

  • 合并策略

    默认采用LastRow合并策略,当新数据的主键与已有记录相同时,旧记录将被覆盖,仅保留最新的一条数据(依据处理时间)。

  • 配置方式

    如果在创建主键表时,未在表属性中显式指定 'table.merge-engine' 参数,系统将自动启用默认的 LastRow Merge Engine。

  • 支持的操作类型

    INSERT、UPDATE、DELETE。

  • 部分更新支持

    支持部分列更新,即仅更新指定列的值,而无需修改整行数据。

使用示例

该示例涵盖了以下典型应用场景:

  • 实时数据同步:在流式数据写入场景中,LastRow Merge Engine 可确保主键记录始终反映最新的状态。

  • 增量更新:支持仅更新部分列的特性,适用于需要高效处理增量数据的业务需求。

  • 数据清理:通过删除操作,用户可以定期清理过期或无效数据,优化存储空间。

CREATE TABLE T (
 k INT,
 v1 DOUBLE,
 v2 STRING,
 PRIMARY KEY (k) NOT ENFORCED
);
-- 插入
INSERT INTO T(k, v1, v2) VALUES (1, 1.0, 't1');
INSERT INTO T(k, v1, v2) VALUES (1, 1.0, 't2');
SELECT * FROM T WHERE k = 1;
-- 输出:
+----+-----+----+
| k | v1 | v2 |
+----+-----+----+
| 1 | 1.0 | t2 |
+----+-----+----+
-- 更新
INSERT INTO T(k, v1, v2) VALUES (2, 2.0, 't2');
UPDATE T SET v1 = 4.0 WHERE k = 2;
SELECT * FROM T WHERE k = 2;
 -- 输出:
+----+-----+----+
| k | v1 | v2 |
+----+-----+----+
| 2 | 4.0 | t2 |
+----+-----+----+
-- 部分更新
INSERT INTO T(k, v1) VALUES (3, 3.0); -- 设置v1为3.0
SELECT * FROM T WHERE k = 3;
-- 输出:
+----+-----+------+
| k | v1 | v2 |
+----+-----+------+
| 3 | 3.0 | null |
+----+-----+------+
INSERT INTO T(k, v2) VALUES (3, 't3'); -- 设置v2为't3'
SELECT * FROM T WHERE k = 3;
-- 输出:
+----+-----+----+
| k | v1 | v2 |
+----+-----+----+
| 3 | 3.0 | t3 |
+----+-----+----+
-- 删除
DELETE FROM T WHERE k > 2;
SELECT * FROM T;
-- 输出:
+----+-----+----+
| k | v1 | v2 |
+----+-----+----+
| 1 | 1.0 | t2 |
+----+-----+----+