postgresql物化视图刷新常见的有直接刷新refresh和增量刷新,这两种刷新思路都不满足当前业务需求,直接refresh会锁定物化视图,增量刷新局限于版本和唯一索引,经过改造提供以下新的解决思路:
drop materialized view if exists view_name_ls;
--创建和原物化视图相同逻辑的临时物化视图
create materialized view view_name_ls as 原物化视图逻辑;
--原物化视图重命名为带动态时间后缀的名称
alter materialized view view_name rename to view_name_${day}${hh24};
--第二步创建的临时物化视图重命名为原物化视图
alter materialized view view_name_ls rename to view_name;
--删除带动态时间后缀的名称物化视图
drop materialized view view_name_${day}${hh24};
定期清理因不可坑距因素导致drop失败的带日期的物化视图
完美解决PostgreSQL物化视图刷新问题alter操作速度非常快,不用担心物化视图rename时不存在的空白期。