Skip to main content

SET RW_IMPLICIT_FLUSH

RW_IMPLICIT_FLUSH 配置选项可控制批处理操作后的隐式 Flush。

句法

SET RW_IMPLICIT_FLUSH = { true | false };

用途

FLUSH 命令可提交挂起的数据更改,并强制 RisingWave 将更新后的数据保存到存储中,确保后续读取可访问最新数据。详情请参阅 FLUSH

但是,启用 RW_IMPLICIT_FLUSH 选项时,大多数情况下不需要显式使用 FLUSH 命令,因为数据更改在批处理操作后会被隐式 Flush 并立即可见。

行为

  • RW_IMPLICIT_FLUSH 设置为 true 时,

    • 通过 INSERTUPDATEDELETE 进行的数据更改在批处理操作后会被隐式 Flush 并立即可见。
    • RisingWave 可确保数据的一致性和可见性,这与传统数据库提供的写后读一致性的保证类似。
  • RW_IMPLICIT_FLUSH 设置为 false(默认行为)时,

    • RisingWave 不保证写后读一致性,即写入可能不会立即对后续的读取可见。
    • 需要在批处理操作后显式调用 FLUSH,以立即将更改保存到存储中。

示例

-- 启用 RW_IMPLICIT_FLUSH
SET RW_IMPLICIT_FLUSH TO true;

-- 执行批处理操作
INSERT INTO users (id, name) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
UPDATE users SET name = 'David' WHERE id = 2;
DELETE FROM users WHERE id = 3;

-- 数据更改被隐式 Flush 并立即可见
SELECT * FROM users;