问题: 当源表中插入了新的行时,这些新行也会发送到该源表的所有物化视图。物化视图中的插入是同步执行的吗?也就是说,一旦服务器向客户端成功确认插入,是否意味着所有物化视图都已完全更新并可供查询?
答案
- 当
INSERT
成功时,数据会同时插入到表和所有物化视图中。 - 插入对于物化视图而言不是原子操作。在
INSERT
执行过程中的某个时间点,并发客户端可能会看到中间状态,此时数据已插入到主表中,但尚未插入到物化视图中,反之亦然。 - 如果您使用的是 异步插入,它们会收集数据并在后台执行常规插入,向客户端返回与常规插入相同类型的答案。如果客户端从带有
wait_for_async_insert
选项的异步插入中收到成功消息(默认情况下),数据将同时插入到表及其所有物化视图中。
问题: 链式/级联物化视图呢?
答案: 规则相同 - 具有成功响应的 INSERT
意味着数据已插入链中的每个物化视图。插入是非原子操作。