繁体   English   中英

Oracle 函数在使用更多模式时真的很慢

[英]Oracle functions are really slow with more schemas

我正在尝试描述我的问题。 我们有两个数据库:一个用于开发的测试数据库和一个生产数据库。 所有表、视图、包、函数、触发器等在两个数据库上都是相同的。 dbs 结构和内容应该相同,但在某些部分它们的工作方式有所不同。

测试数据库。

  • 架构 1/包 1/功能 1
  • 模式 2/包 2/程序 1

产品。 D B。

  • 架构 1/包 1/功能 1
  • 模式 2/包 2/程序 1
  • Schema2 / Package1/Function1 <--emergency solution atm: 完全相同的代码,只是从 Schema 1 移到了 Schema 2

在测试数据库中。 Schema2/Package2/Procedure1 调用 Schema1/Package1/Function1。 它工作正常(几秒钟)。

在产品数据库中。 Schema2/Package2/Procedure1 调用 Schema1/Package1/Function1。 它的工作真的很慢。 (更多分钟)

在 Prod DB Schema2/Package2/Procedure1 中调用 Schema2/Package1/Function1。 它的工作速度一样快。

我们应该在哪里检查Prod DB中的问题。? ini 文件或其他地方的哪些设置可能是错误的?

有什么想法吗?

让我们尝试一种自上而下的方法。 Test DB 和 Prod DB 在不同的服务器上吗? 如果是这样,是否有可能一台服务器比另一台负载更重? (查看 top、sar 等,以了解整体系统资源及其使用方式。)

其次,在数据库级别,Oracle 可以帮助您确定任何性能问题的根本原因。 第一步,你在测试和生产中是否有相同的执行计划? 如果执行计划变化(并且可以根据数据量和数据分布等),则可能会对性能产生巨大影响 (使用 dbms_xplan 显示执行计划。)

如果执行计划没有不同,您还应该考虑数据量和分布的差异是否会导致生产性能更差,即使执行计划相同。

最后,您可以使用像 Tanel Poder 的 snapper.sql ( http://blog.tanelpoder.com/files/scripts/snapper.sql ) 这样的工具来准确查看时间花在哪里。 这可能会导致您找到性能问题的根本原因。

你的问题的性质是这样的,实际上没有具体的答案。 我只是想让你指出正确的方向,并给你一些思考的要点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM