Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 为什么刷新实体化视图会同时阻止插入/更新?_Database_Postgresql_Database Design - Fatal编程技术网

Database 为什么刷新实体化视图会同时阻止插入/更新?

Database 为什么刷新实体化视图会同时阻止插入/更新?,database,postgresql,database-design,Database,Postgresql,Database Design,为了解决这个问题,让我们假设物化视图具有两个表连接 同时刷新此视图会阻止所有更新/插入。这是为了确保刷新视图时数据是最新的 但是为什么我们不能在执行此操作时允许更新/插入,在执行刷新之后,无论如何都会有更新,并且让在刷新期间完成的更新/插入可以在下次刷新时反映出来 阻止插入/更新的设计决策到底是什么?我是不是遗漏了什么?这是一个微妙的问题 它将物化视图锁定为自身。不是它引用的表;它们不会被锁定以防写入,并且可以继续正常使用 REFRESH MATERIALIZED VIEW concurrenc

为了解决这个问题,让我们假设物化视图具有两个表连接

同时刷新此视图会阻止所有更新/插入。这是为了确保刷新视图时数据是最新的

但是为什么我们不能在执行此操作时允许更新/插入,在执行刷新之后,无论如何都会有更新,并且让在刷新期间完成的更新/插入可以在下次刷新时反映出来

阻止插入/更新的设计决策到底是什么?我是不是遗漏了什么?

这是一个微妙的问题

它将物化视图锁定为自身。不是它引用的表;它们不会被锁定以防写入,并且可以继续正常使用


REFRESH MATERIALIZED VIEW concurrence
允许在更新视图时继续刷新,而不阻止在视图上选择。更新大视图的一小部分时,它的性能也会更好。

“同时刷新此视图会阻止所有更新/插入”-您确定吗?我在手册中找不到任何说明(假设您正在讨论源表中的插入),从文档中,通过同时刷新物化视图获得独占锁,该锁将与除并发读取之外的所有其他锁冲突。我的问题是,反之亦然。该锁是在物化视图上获得的,而不是在源表上获得的。@a_horse_,没有名称:Yeah。。文档让我困惑……我只是尝试了一下,它没有获得任何独占锁。啊!!这些文件让我有点困惑..谢谢你澄清了这一点。