清除PostgreSQL中的示例化视图

oyjwcjzk  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(138)

我有一个大小为10GB的表,表上有一个示例化视图(没有连接等)的大小也是10gb。我在表上使用pg_repack,它的大小减少到660mb。但在并发刷新实体化视图后,垫子视图的大小仍然是10gb。当我在该表上创建相同的新垫子视图时,它的大小设置为610mb。除了删除和重新创建之外,是否还有其他方法可以清除实体化视图?每次都应提供实体化视图

31moq8wy

31moq8wy1#

可以使用以下命令清除示例化视图

REFRESH MATERIALIZED VIEW mv WITH NO DATA;

但这没有多大意义。您的实体化视图膨胀了。这是因为REFRESH MATERIALIZED VIEW CONCURRENTLY实际上并没有替换,而是更新了现有数据。有两种方法可以消除膨胀:
1.

REFRESH MATERIALIZED VIEW mv;

不使用CONCURRENTLY刷新实体化视图将丢弃旧的膨胀表。
1.

VACUUM (FULL) mv;


这两种方法都使示例化视图在语句运行时不可访问,但无法避免这种情况。

相关问题