oracle – 物化视图日志的事务性能影响

oracle – 物化视图日志的事务性能影响,第1张

概述我一直在研究使用物化视图进行数据聚合和报告,以便主要以事务为中心(使用Oracle数据库).当前的报告系统依赖于一系列视图,这些视图模糊了应用程序的许多复杂数据逻辑.这些视图在调用系统时会给系统带来沉重的负担. 我们感兴趣的是使用“快速刷新”进行增量更新,以便在用于报告之前执行一些复杂的查询逻辑;但是,组织内部存在一个问题,即物化视图日志(这是快速刷新所需)会对我们当前在数据库中的事务性能产生影响 我一直在研究使用物化视图进行数据聚合和报告,以便主要以事务为中心(使用Oracle数据库).当前的报告系统依赖于一系列视图,这些视图模糊了应用程序的许多复杂数据逻辑.这些视图在调用系统时会给系统带来沉重的负担.

我们感兴趣的是使用“快速刷新”进行增量更新,以便在用于报告之前执行一些复杂的查询逻辑;但是,组织内部存在一个问题,即物化视图日志(这是快速刷新所需)会对我们当前在数据库中的事务性能产生影响.这种表现对我们的组织非常重要,因此非常担心会发生任何变化.

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

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”子句,而是在创建视图时使用“on demand”子句,因为我们知道这会对性能产生影响.

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

谢谢你的帮助!

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

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

总结

以上是内存溢出为你收集整理的oracle – 物化视图日志的事务性能影响全部内容,希望文章能够帮你解决oracle – 物化视图日志的事务性能影响所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1166496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存