物化视图和视图的区别

视图是数据库管理系统中最重要的概念。在面试中,这是一个流行且常见的问题,很像截断与删除、相关、相关与非相关子查询,或主键与唯一键。本教程将了解视图和物化视图之间的区别。
原始表存储在数据库的物理内存中。我们可以通过运行查询来访问所有属性。但有时,我们不得不限制用户从表中获取一些数据,并且只允许他们获取允许的属性。假设我们有一个学生表,用户可以搜索学生姓名、分数、分支、年龄和其他关于学生的信息。但不得允许用户获取学生的手机号码和地址。

在这种情况下,创建一个可以显示表所需属性的数据的视图是一个好方法。我们可以通过创建虚拟表或视图以及物化视图来实现这样的功能。

让我们了解视图的概念。

什么是视图?

视图是充当实际关系的数据库的虚拟表。它不是数据库系统的逻辑关系模型的一部分。它们是使用选择查询创建的,但结果不存储在物理内存中。每次我们向视图发起查询时,视图都会从原始表中返回更新的和最新的数据。这意味着每次访问视图时都会生成视图。在此视图中,查询定义存储在数据库本身中。我们可以根据需要创建任意数量的视图。

关键是要记住,当我们对虚拟表进行任何更改时,它都会反映在原始表中。如果我们对原始表或基表进行任何更改,这些更改将反映在视图中。这使得查询性能非常缓慢。例如 – 我们从另外两个表的连接中创建一个视图。在这种情况下,我们必须在每次尝试获取数据时解析连接并创建它们。

但是,它提供了一些优点,例如它不需要内存来存储数据。我们可以使用以下语法创建视图。

语法 –

Create view as <select query expression> 

视图的优势

以下是视图的一些重要优点 –

  • 视图可以只是包含大量数据的基表,可以根据数据要求定义一个虚拟表。
  • 可以通过连接多个表之一轻松定义视图。
  • 视图可以隐藏数据的复杂性。
  • 视图可以限制底层表对外部世界的暴露程度。

物化视图是什么?

物化视图也称为虚拟表,但查询表达式的结果保存在物理内存中。查询定义也存储在数据库中。我们也可以将它们视为原始基表的物理副本。它主要用于数据仓库的上下文中。 SQL 中没有定义物化视图的标准视图。然而,很少有数据库管理系统提供自定义扩展来使用物化视图。与普通视图不同,它们不会在每次使用时更新。相反,我们需要手动或在触发器的帮助下更新它。更新物化视图的过程称为物化视图维护。

它将结果存储在物理内存中,它比普通视图响应更快,因为每当我们运行查询时都会创建普通视图。主要用于数据的汇总、预计算、复制和分发等。让我们了解物化视图的语法:

Create Materialized View view_name   Build [clause] Refresh [ type]   ON [trigger ]   As <query expression> 

在上述语法中,Build 子句决定何时填充物化视图。 它包含两个选项 –

  • IMMEDIATE – 它立即填充物化视图。
  • DEFFERED – 需要至少手动刷新一次实体化视图。

刷新类型定义了如何更新物化视图,有三种选择——:

  • FAST – 物化视图日志需要提前针对源表,没有日志,创建失败。 尝试快速刷新,尝试快速刷新。
  • COMPLETE – 支持物化视图的表段被截断并使用关联查询完全重新填充。
  • FORCE – 不需要物化日志,尝试快速刷新。

On trigger 定义何时更新物化视图。刷新可以通过两种方式触发 –

  • ON COMMIT – 当数据更改提交到依赖表之一时,刷新被触发。
  • ON DEMAND – 当安排任务或手动请求时会发生刷新。

我们已经讨论了普通视图和物化视图的基本概念。 现在,让我们看看普通视图和物化视图之间的区别。

物化视图的优点

以下是物化视图的一些重要优点:

  • 物化视图优化了查询性能,每次使用相同的子查询结果。
  • 物化视图中的数据更新不频繁,用户需要手动更新数据或使用触发子句。 它减少了任何错误的机会并返回有效的结果。
  • 物化视图是透明的,并在雪花的帮助下自动维护,雪花是一种后台服务。

视图和物化视图的区别

以下是视图和物化视图之间的重要区别 –

编号 视图 物化视图
1 视图是基表的虚拟投影。查询表达式存储在数据库中,但不存储查询表达式的结果数据。 结果数据和查询表达式都保存在物理内存(数据库系统)中。
2 视图一般是通过连接一个或多个表来创建的。 物化视图主要用于数据仓库。
3 视图是基于选择查询的虚拟表它也称为数据的快照视图 它提供对单独表中重复的物理数据的访问。
4 使用多表创建的DML命令不能使用。 DML 命令可以在物化视图中使用,无论它们是如何创建的。
5 普通视图不涉及更新成本。 它确实有与之相关的更新成本。
6 浏览量反应慢。它会导致查询性能。 物化视图响应更快。因为它将数据存储在数据库中。
7 视图是根据基于定义视图的 SQL 标准的固定设计架构方法定义的。 没有预定义的 SQL 标准来定义它,数据库以扩展的形式提供功能。
8 当数据访问不频繁,表中数据更新频繁时,视图更有效。 物化视图多用于数据访问较频繁且数据更新不频繁的情况。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264161.html

(0)
上一篇 2022年6月7日 00:38
下一篇 2022年6月7日 00:38

相关推荐

发表回复

登录后才能评论