【问题标题】:Oracle functions are really slow with more schemas使用更多模式时,Oracle 函数真的很慢
【发布时间】:2017-12-07 02:17:27
【问题描述】:

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

测试数据库。

  • Schema1/Package1/Function1
  • Schema2/Package2/Procedure1

产品。数据库。

  • Schema1/Package1/Function1
  • Schema2/Package2/Procedure1
  • Schema2 / Package1/Function1

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

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

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

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

有什么想法吗?

【问题讨论】:

  • 您最好在dba.stackexchange.com 上提问 - 这似乎不是一个特定的编程问题,因此这里被认为是题外话。
  • 这些怪异的可能通常是 PL/SQL 内部的 SQL 语句的结果。您可能需要找到慢速 SQL 语句并对其进行故障排除。有许多不寻常的功能,例如基数反馈和自适应游标共享,可以使 SQL 语句在执行几次后运行得更慢或更快。甚至更改 SQL 的间距或重新编译,都可能迫使 Oracle 重新解析语句并为某些用户生成新计划。

标签: database oracle function schema


【解决方案1】:

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

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

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

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

您的问题的性质是真的没有具体的答案。我只是试图让你指出正确的方向,并给你一些思考的要点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多