PG物化视图(Materialized View)是PostgreSQL中一种特殊的视图,是对基本表数据的聚合和简化,并将结果缓存到物理表中。物化视图可以提高查询的执行效率,并且可以实现对基本表数据的定期刷新,确保数据的正确性。其主要优缺点如下:
优点:
1 提高查询性能。物化视图的使用可以避免大量 joins、group by 和聚集函数,可以加快查询速度。也可以在物化视图中进行预计算,简化表的复杂查询。
2 降低数据冗余。物化视图将计算结果保存在物理表中,相比动态视图或查询,无需每次执行查询时计算全部数据,可以有效减少数据冗余。
3 优化查询计划。物化视图可以作为附加的优化器提高查询计划的效率,特别是当查询中有多个相同的联结、聚合函数或固有的查询逻辑时。
4 常用于大数据量的系统。当查询结果集是大数据量的时候,直接读取物化视图,而非直接查询源数据表,这对于大数据量系统的性能改善是非常显著的。
缺点:
1 物化视图增加了存储成本。使用物化视图会占用更多的磁盘空间,增加存储和维护成本。
2 物化视图必须定期刷新。使用物化视图需要定期刷新保证数据的正确性,如果刷新的时间不当,可能导致数据不一致。
3 物化视图可能不适合高并发的应用场景。当物化视图的更新频率高,而且许多查询同时访问物化视图的时候,可能会产生锁问题。
4 物化视图的维护有一定的复杂性。如果物化视图对基本表进行了除了简单查询之外的 DML *** 作,就需要对物化视图进行重新计算或刷新,或禁止对基本表进行 DML *** 作,这需要一定的管理和维护成本。
总之,PG物化视图具有明显的性能优势和简化查询的能力,但是也需要权衡其缺点,特别是存储和维护成本。
基本表是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础。数据在表中式按行和列的格式组织排列的。
视图是计算机数据库中的一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。
基本表、视图区别为:存在不同、存储内容不同、 *** 作不同。视图是由一个或几个基本表导出形成的虚表。
一、存在不同
1、基本表:基本表是本身独立存在的表。
2、视图:视图本身不存在独立存储在数据库中,是一个虚表。
二、存储内容不同
1、基本表:基本表存储的内容是实际的数据。
2、视图:视图存储的内容只有存储定义,不存放实际数据。
三、 *** 作不同
1、基本表: *** 作者可以对基本表进行增删改查四种 *** 作。
2、视图: *** 作者只可以对视图进行查 *** 作,不能进行增删改 *** 作。
参考资料来源:
百度百科——表
百度百科——视图
依据使用的数据源可将视图分为本地视图和远程视图。
使用当前数据库中的表建立的视图称为本地视图,用当前数据库之外的数据源中的表建立的视图称为远程视图。视图是一张虚拟表,只能保存在数据库中,磁盘上找不到相关的文件。
视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。
视图看上去非常像数据库的物理表,对它的 *** 作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)。
扩展资料
视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:
1、如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
2、如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
3、如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
4、如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
参考资料来源:百度百科-视图 (计算机数据库术语)
数据库系统中,视图是数据对象,视图可以被看成是虚拟表或存储查询,只有在数据库打开时才能使用。
表是处理数据、创建关系数据库和应用的基本单元,可以是自由表,或是数据库的一部分的数据库表。
使用 MQT物化查询表(Materialized Query Tables MQT)
MQT 的定义基于查询的结果 MQT 可以显著提高查询的性能 本教程将介绍 MQT 总结表(summary table)和 staging 表 并通过一些实用的例子展示如何创建和使用物化查询表
MQT 是基于查询的结果定义的一个表 MQT 中包含的数据来自 MQT 定义所基于的一个或多个表 总结表(也称自动总结表[AST])对于 IBM DB for Linux UNIX and Windows 的用户来说应该感到比较熟悉 它们可以看作是特殊的 MQT fullselect 是总结表定义的一部分 它包含一个 GROUP BY 子句 该子句总结 fullselect 中所引用表中的数据
您可以将 MQT 看作一种物化的视图 视图和 MQT 都是基于一个查询来定义的 每当视图被引用时 视图所基于的查询便会运行 但是 MQT 实际上会将查询结果存储为数据 您可以使用 MQT 中的这些数据 而不是使用底层表中的数据 MQT 可以显著提高查询的性能 尤其是提高复杂查询的性能 如果优化器确定查询或查询的一部分可以用一个 MQT 来解决 那么查询就可以被重写以便利用 MQT MQT 可以在创建表时定义 可以定义为由系统维护 也可以定义为由用户维护
这种 MQT 中的数据是由系统维护的 当创建这种类型的 MQT 时 可以指定表数据是 REFRESH IMMEDIATE 还是 REFRESH DEFERRED 通过 REFRESH 关键字可以指定如何维护数据 DEFERRED 的意思是 表中的数据可以在任何时候通过 REFRESH TABLE 语句来刷新 系统维护的 MQT 不管是 REFRESH DEFERRED 类型的还是 REFRESH IMMEDIATE 类型的 对它们的插入 更新或删除 *** 作都是不允许的 但是 对于 REFRESH IMMEDIATE 类型的系统维护的 MQT 可以通过 对底层表的更改(即插入 更新或删除 *** 作)来更新
lishixinzhi/Article/program/DB2/201311/21922
以上就是关于pg物化视图优缺点全部的内容,包括:pg物化视图优缺点、什么叫基本表什么是视图二者的区别和联系是什么、视图的分类为等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)