【问题标题】:different response time when executing a specific query执行特定查询时的不同响应时间
【发布时间】:2019-04-23 15:30:02
【问题描述】:

一段时间以来,我一直试图找出性能问题,如果有人能帮助我理解这个问题,我将不胜感激。

我们的应用程序连接到 Oracle 11g。我们有一个非常大的表,其中保存了过去两个月的数据。我们每半小时进行数百万次插入,并在每天结束时进行一次大批量删除操作。我们的两列已编入索引,而且我们肯定有倾斜的列。

问题是我们在读取该表时面临许多缓慢的响应。因为我不是数据库专家,所以我做了一些研究。我知道绑定变量窥视和游标共享。问题是,即使对于具有特定参数的特定查询,我们也会看到不同的执行时间!

表中没有LOB列,我们用来读取数据的查询并不复杂!它会在特定范围(列已编入索引)内查找具有特定名称(列已编入索引)的所有行。

  • 我想知道我们所做的大量插入/删除是否会导致任何问题?
  • 我们是否可以考虑进行任何类型的分析以获取有关此问题的更多信息?

【问题讨论】:

    标签: sql oracle11g database-performance response-time oracle-enterprise-manager


    【解决方案1】:

    我可以看到您的查询时间不一致的几个可能原因。

    1. 查询运行时完成的更新次数。只要您在查询中使用的表有锁,您的查询就必须等待它们被释放。
    2. 表上的统计信息可能与如此多的数据操作变得非常不同步。我会尝试两件事。首先,我会找出 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC 作业何时运行,并确保每晚在此作业之前执行批量删除。如果这没有帮助,我会要求 DBA 在您的数据库上设置 DBMS_MONITOR 以帮助您解决问题。

    【讨论】:

    • 感谢您的回复! “索引碎片”也会是因素之一吗?我最近听说过这个词,但还没有做足够的研究!
    • 是的,索引碎片可能会成为插入和删除数量的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多