gpt4 book ai didi

database - 同一数据库服务器上的 Oracle 物化 View 与复制

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:02 25 4
gpt4 key购买 nike

我们需要在一天中的预定时间运行报告。应用程序 24*7 运行,因此没有“非高峰”时间。

因此,运行报告不应给系统增加不必要的负载。

应用程序运行在 WebSphere v6.1 上,数据库是 Oracle 10g R2。

我可以使用以下方法

  1. 一组旨在报告的非规范化表格。
  2. 创建物化 View 并将其用于报告。我们可以每天更新一次 View 。
  3. 我们可以创建另一个模式并使用 Oracle 的 Data Guard 实时复制表。

(1) 由于我们有某些内部限制而不可行。

我需要知道,从性能的角度来看,(2) 还是 (3) 哪个更好?

我从很多人那里听说物化 View 最初运行良好,但随着数据量的增加,性能很差。

任何人都有在同一数据库服务器中复制表的经验(但实例或模式不同)。

最佳答案

在某种程度上,物化 View 非规范化表 - 非规范化是您可以在 SELECT 语句中定义的任何内容,例如连接、聚合和分析函数。在 MV 的原始定义之后,您可以向基础 MV 表中添加获得所需性能所需的任何索引。

话虽如此,我认为您的选择是:

  1. 在同一数据库中使用由您编写的代码以某种方式维护的非规范化表 - 此选项将使您能够最大程度地控制加载过程,但必须编写和维护代码。您还将消除单独实例的基础架构开销。非规范化过程和报告查询将增加事件/事务数据库的资源需求,您必须调整大小来处理这个问题。使用此选项,您还可以将报告应用程序的可用性与交易系统的可用性联系起来。
  2. 在同一数据库中使用 MV - 上述关于基础架构和资源开销的评论适用,但您可以利用 Oracle 的 MV 功能进行调度(通过 DBMS_JOB 实现)和事务读取一致性(在解析并提交新 SELECT 之前,“旧”数据仍然可见。
  3. 在同一主机上的另一个数据库/实例中使用 MV - 通过此选项您可以获得一些边际分离和潜在可用性,但您仍然会影响数据库主机的整体资源。 Oracle 的更高版本允许您将实例内的资源使用控制到细粒度级别,因此在我看来,没有充分的理由在同一主机上运行单独的数据库。
  4. 在不同主机上的另一个数据库中使用 MV - 您可以设置到事务系统的数据库链接并通过链接执行 MV 刷新。您仍然会有 MV 刷新/“加载”过程影响源系统上的资源,但是所有查询事件都将被隔离,并且在源系统停机期间您将有一定程度的报告可用性。如果选择此选项,您必须购买额外的 Oracle 许可。
  5. 使用 Data Guard 实例 - 缺点:额外的许可证、设置和管理的复杂性增加。优势:对源系统的影响最小,系统的真实副本,如果您使用逻辑而不是物理复制,您可以在 Data Guard 数据库中创建额外的结构( View 、索引等)。

关于database - 同一数据库服务器上的 Oracle 物化 View 与复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com