跳到主要内容

物化视图是同步插入的吗?

·阅读时间 2 分钟

问题: 当源表中插入了新的行时,这些新行也会发送到该源表的所有物化视图。物化视图中的插入是同步执行的吗?也就是说,一旦服务器向客户端成功确认插入,是否意味着所有物化视图都已完全更新并可供查询?

答案

  1. INSERT 成功时,数据会同时插入到表和所有物化视图中。
  2. 插入对于物化视图而言不是原子操作。在 INSERT 执行过程中的某个时间点,并发客户端可能会看到中间状态,此时数据已插入到主表中,但尚未插入到物化视图中,反之亦然。
  3. 如果您使用的是 异步插入,它们会收集数据并在后台执行常规插入,向客户端返回与常规插入相同类型的答案。如果客户端从带有 wait_for_async_insert 选项的异步插入中收到成功消息(默认情况下),数据将同时插入到表及其所有物化视图中。

问题: 链式/级联物化视图呢?

答案: 规则相同 - 具有成功响应的 INSERT 意味着数据已插入链中的每个物化视图。插入是非原子操作。