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

时间:2019-04-23 15:30:03

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

一段时间以来,我一直在尝试解决性能问题,如果有人可以帮助我理解该问题,我将不胜感激。

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

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

表中没有LOB列,用于读取数据的查询并不复杂!它会在特定范围内(对索引建立索引)查找具有特定名称(对索引建立索引)的所有行。

  • 我想知道我们进行的大量插入/删除操作是否会引起任何问题?
  • 是否可以考虑进行任何类型的分析以获取更多有关此问题的意见?

1 个答案:

答案 0 :(得分:1)

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

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