Skip to main content

FLUSH

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

句法

FLUSH;

FLUSH 的用途

RisingWave 使用数据库快照实现数据的持久性。它会定期触发快照,将算子状态 Flush 到存储(如 S3)。如果发生故障,算子会通过最新的快照恢复。

但是,快照是异步的。默认情况下,RisingWave 不保证写入后读取的一致性,即写入的内容可能无法后续立即被读取。

FLUSH 命令提供了一种同步保存挂起的更改并确保后续读取最新数据的方法。它会阻塞进程直到更改被保存。

何时使用 FLUSH

FLUSH 应该在更改数据的语句之后使用,包括:

  • DML 语言,如 INSERTUPDATEDELETE

  • 创建查询数据的对象的 DDL 语言。

在下面的示例中,FLUSH 可确保从 INSERT 中挂起的数据更改已保存,并在查询前已生成新的物化视图:

CREATE TABLE users (id INT, name VARCHAR(50));

INSERT INTO users VALUES (1, 'Alice');

FLUSH;

CREATE MATERIALIZED VIEW user_count AS
SELECT COUNT(*) AS total_users FROM users;

FLUSH;

SELECT * FROM user_count;

相关内容