gpt4 book ai didi

oracle - 物化 View 日志的事务性能影响

转载 作者:行者123 更新时间:2023-12-04 23:23:29 28 4
gpt4 key购买 nike

我一直在研究使用物化 View 为主要以事务为中心的公司(使用 Oracle 数据库)进行数据聚合和报告目的。当前的报告系统依赖于一系列 View ,这些 View 掩盖了应用程序的许多复杂数据逻辑。这些 View 在被调用时会给系统带来沉重的负担。

我们有兴趣使用“快速刷新”进行增量更新,以在报告中使用之前执行一些复杂的查询逻辑;然而,组织内部担心实体化 View 日志(这是快速刷新所必需的)会对我们当前数据库中的事务性能产生影响。这种表现对我们的组织非常重要,因此非常担心任何变化。

以下是我们需要实现的物化 View 日志类型的示例:

create materialized view log on transaction
with rowid, sequence(transaction_id,account_id,order_id,currency_id,price,transaction_date,payment_processor_id)
including new values;

我们不会在更新中使用“on commit”子句,而是在创建 View 时使用“on demand”子句,因为我们知道这会影响性能。

实现这种类型的日志记录会影响数据库事务性能吗?我想它一定会稍微影响性能,因为提交中包含一个额外的写入过程(到日志),但我在 Oracle 文档中找不到任何对此的引用。任何有关此主题的文献或建议将不胜感激。

谢谢你的帮助!

最佳答案

是的,会有影响。物化日志需要同步维护,因此事务需要为基表中修改的每一行在物化 View 日志中插入新行。影响有多大在很大程度上取决于系统。如果您的系统受 I/O 限制并且您已经对其进行了优化,以便将更改物理写入基表是等待时间的重要部分,那么影响将比您的系统受 CPU 限制和大部分等待时间用于读取数据或执行计算。

如果您真的很关心 OLTP 系统的性能,那么将报告卸载到不同服务器上的不同数据库是有意义的。您可以使用 Streams(或 GoldenGate,如果您负担得起额外的许可)将数据复制到报告服务器,这对源的影响比物化 View 要小,因为可以异步读取重做信息(并且可以在报告服务器,而不是将该工作负载放在生产服务器上)。然后,您可以在报告服务器上定义物化 View ,它们不会对 OLTP 服务器产生任何影响。或者您可以创建一个逻辑备用数据库作为您的报告服务器并在那里创建物化 View 。无论哪种方式,将报告工作负载从生产服务器上移开并异步读取重做数据都将保护生产服务器的性能。

关于oracle - 物化 View 日志的事务性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951818/

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