使用更多模式的Oracle函数非常慢

时间:2017-07-03 18:24:30

标签: database oracle function schema

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

测试数据库。

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

PROD。 DB。

  • Schema1 / Package1 / Function1
  • Schema2 / Package2 / Procedure1
  • Schema2 / Package1 / Function1< - 紧急解决方案atm:完全相同的代码, 刚从Schema 1迁移到Schema 2

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

在Prod DB中。 Schema2 / Package2 / Procedure1调用Schema1 / Package1 / Function1。它工作得很慢。 (更多分钟)

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

其次,在数据库级别,Oracle配备齐全,可帮助您确定任何性能问题的根本原因。第一步,你在测试和生产中有相同的执行计划吗?如果执行计划有所不同(并且可以根据数据量和数据分布等因素而变化),那么可能会导致巨大的性能差异。 (使用dbms_xplan显示执行计划。)

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

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

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

希望有所帮助。