0

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

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

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

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

  • 我想知道我们所做的大量插入/删除是否会导致任何问题?
  • 是否有任何类型的分析我们可以考虑在这个问题上获得更多意见?
4

1 回答 1

1

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

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