执行特定查询时的不同响应时间

different response time when executing a specific query

一段时间以来,我一直在努力解决性能问题,如果有人能帮助我理解这个问题,我将不胜感激。

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

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

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

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

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