postgresql 物化视图

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: postgresql 物化视图的使用介绍

postgresql 物化视图

使用场景

1、将复杂查询视图化,提高检索的能力,作用于实时性不是非常高,例如非秒级实时场景,分钟级以上皆可,因为同步上存在延迟
2、远程视图本地化,用于有些查询需要消耗非常高的远程IO,导致查询时间非常缓慢的场景,可通过物化视图实现本地查询的效果,快速返回结果
3、可以当作是一张独立的表,可以与其他表进行关联查询,减小查询io,快速返回结果
4、可独立构建特定查询字段的索引,以此达到快速检索的目的

创建物化视图
CREATE MATERIALIZED VIEW ten_month_goods AS
select GSID,NO,TYPE,STATUS,GOODS_NAME,GOODS_BIG_TYPE_ID_INT,GOODS_TYPE_NAME,START_PROVINCE,START_CITY,START_DISTRICT,START_LOCATION,END_PROVINCE,END_CITY,END_DISTRICT,END_LOCATION,RELEASE_TIME,CONTACT,USE_VC_TYPE,USE_VC_LENGTH
from tra_goods_source
where 1=1
-- 从第10月开始截至到现在的数据
and  release_time>=( now() - interval '10 month')
全量刷新物化视图
-- 全量刷新视图,但是这个时候,视图会被锁住,导致所有查询都无法正常查询,全量刷新,速度较快,400万条数据大概耗时大概在 30s左右
REFRESH MATERIALIZED VIEW ten_month_goods;
增量刷新物化视图
-- 唯一索引构建,必须至少有一个唯一索引,才能使用增量物化视图
CREATE UNIQUE INDEX uni_ten_month_goods
on ten_month_goods (gsid);
-- 根据唯一索引刷新视图,但是速度非常慢,7倍左右的时间消耗,400万条数据大概耗时大概在 150s左右
REFRESH  MATERIALIZED VIEW CONCURRENTLY ten_month_goods;
删除物化视图
-- 删除物化视图
drop materialized view ten_month_goods ;
自动刷新视图方式
-- 构建触发器(不推荐)
create or replace function tri_ten_month_goods_func() returns trigger as 
$$ 
declare
begin 
  refresh materialized view concurrently ten_month_goods with data; 
  return null; 
end; 
$$ language plpgsql;

-- 表插入、更新、删除时都会触发刷新视图,但是如果刷新速度很慢的话,会使CURD的操作很久才能正常响应完成,不推荐
create trigger tri_tra_goods_source
after insert or update or delete on tra_goods_source
for each statement 
  execute procedure tri_ten_month_goods_func();

-- 发现非常慢的情况下请删除触发器
DROP TRIGGER if EXISTS tri_tra_goods_source 
ON tra_goods_source;
定时刷新视图(推荐)
-- 安装 pg_cron 组件
git clone https://github.com/citusdata/pg_cron.git
cd pg_cron
source /home/postgres/.bash_profile
make
make install

-- =====================================
-- 修改pg数据库启动配置
-- 启动时加载 cron 组件
shared_preload_libraries = 'pg_cron' 
-- cron 数据库名
cron.database_name = 'mes'

-- ==============================
-- 数据库启用插件
create extension pg_cron;
-- 删除插件的指令
DROP EXTENSION pg_cron;
-- 使用cron命令格式
SELECT cron.schedule('<定时计划>', '<定时任务>')
-- 每个小时的23分执行指定脚本。
SELECT cron.schedule('23 * * * *', 'select 1;');
--  查看任务列表
SELECT * FROM cron.job;
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5月前
|
存储 关系型数据库 数据库
postgresql|数据库|提升查询性能的物化视图解析
postgresql|数据库|提升查询性能的物化视图解析
563 0
|
12月前
|
存储 安全 关系型数据库
PostgreSQL物化视图增量更新扩展 -- pg_ivm
PostgreSQL不支持物化视图增量更新,需要定期执行REFRESH MATERIALIZED VIEW命令刷新物化视图。Incremental View Maintenance (IVM)是一种使物化视图保持最新的方法,其中只计算增量更改并将其应用于视图,而不是REFRESH MATERIALIZED VIEW那样从头开始重新计算内容。当只更改视图的一小部分时,IVM可以比重新计算更高效地更新物化视图。
|
4月前
|
运维 Cloud Native 关系型数据库
云原生数据仓库AnalyticDB产品使用合集之PostgreSQL版是否直接支持实时物化视图
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
126 3
|
4月前
|
SQL 关系型数据库 PostgreSQL
【sql】PostgreSQL物化视图表使用案例
【sql】PostgreSQL物化视图表使用案例
47 0
|
SQL Oracle 关系型数据库
物化视图(Oracle与PostgreSQL对比)
物化视图(Oracle与PostgreSQL对比)
|
5月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL版提供了实时物化视图功能,相较于普通(非实时)物化视图,实时物化视图无需手动调用刷新命令,即可实现数据更新时自动同步刷新物化视图。当基表发生变化时,构建在基表上的实时物化视图将会自动更新。AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
143988 8
|
存储 关系型数据库 数据库
《PostgreSQL物化视图:创建、维护与应用》
《PostgreSQL物化视图:创建、维护与应用》
130 0
|
SQL 缓存 关系型数据库
【PostgreSQL技巧】PostgreSQL中的物化视图与汇总表比较
【PostgreSQL技巧】PostgreSQL中的物化视图与汇总表比较
|
存储 SQL Oracle
10 PostgreSQL 表级复制-物化视图篇, 支持异地,异构如 Oracle 到 pg 的物化视图|学习笔记
快速学习10 PostgreSQL 表级复制-物化视图篇,支持异地,异构如 Oracle 到 pg 的物化视图
526 0
10 PostgreSQL 表级复制-物化视图篇, 支持异地,异构如 Oracle 到 pg 的物化视图|学习笔记
|
SQL 关系型数据库 OLAP
【实操系列】AnalyticDB PostgreSQL 万倍查询加速——使用实时物化视图加速带可变参数的查询
以TPCH Q1为例,介绍一个优化案例,使用AnalyticDB PostgreSQL的实时物化视图+自动查询改写,近万倍优化带可变参数的OLAP查询
681 1
【实操系列】AnalyticDB PostgreSQL 万倍查询加速——使用实时物化视图加速带可变参数的查询