REFRESH

Crate is eventually consistent. Data written with a former statement is not guaranteed to be fetched with the next following select statement for the affected rows.

Crate是最终一致的。前一个语句写入的数据不保证可以被下一个select语句获取这些受影响的行。

如果需要,可以显式刷新一个或者多个表以确保获取表的最新状态。

cr> refresh table locations;
REFRESH OK, 1 row affected (... sec)

一个以一个指定的间隔周期性地刷新。默认配置下,刷新间隔设置的是1000毫秒。一个表的刷新间隔可以通过表参数refresh_interval更改(参见refresh_interval)。

多表刷新(Multiple Table Refresh)

如果需要,可以在一个SQL语句中使用逗号分隔的方式定义多个表。这样确保它们都可以得到刷新,因此它们的数据集是一致的。如果每个给定表上的请求都完成,将会打印结果信息。

cr> REFRESH TABLE locations, parted_table;
REFRESH OK, 2 rows affected (... sec)

注意
如果一个或多个表或者分区不存在,则不会刷新任何给定的表/分区,而且将会返回一个错误。错误将返回第一个不存在的表/分区。

分区刷新(Partition Refresh)

此外,可以定义刷新一个分区表的分区(查看分区表)。

通过在refresh语句中使用PARTITION子句,可以分别执行给定分区的请求。这意味着只有指定的分区表的分区才可以被刷新。怎么在一个分区表上创建一个refresh请求的更多详情请参见SQL语法和概要(参见 刷新)。

cr> REFRESH TABLE parted_table PARTITION (day='2014-04-08');
REFRESH OK, 1 row affected (... sec)

如果省略PARTITION子句,则将刷新所有分区。如果一个表有多个分区,由于性能问题应该避免这么操作。

results matching ""

    No results matching ""