FLUSH
FLUSH
命令可提交任何挂起的数据更改并强制 RisingWave 将更新的数据保存到存储中,确保后续读取可以访问最新的数据。
句法
FLUSH;
FLUSH
的用途
RisingWave 使用数据库快照实现数据的持久性。它会定期触发快照,将算子状态 Flush 到存储(如 S3)。如果发生故障,算子会通过最新的快照恢复。
但是,快照是异步的。默认情况下,RisingWave 不保证写入后读取的一致性,即写入的内容可能无法后续立即被读取。
FLUSH
命令提供了一种同步保存挂起的更改并确保后续读取最新数据的方法。它会阻塞进程直到更改被保存。
何时使用 FLUSH
FLUSH
应该在更改数据的语句之后使用,包括:
DML 语言,如
INSERT
、UPDATE
或DELETE
。创建查询数据的对象的 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;