执行特定查询时的不同响应时间
different response time when executing a specific query
一段时间以来,我一直在努力解决性能问题,如果有人能帮助我理解这个问题,我将不胜感激。
我们的应用程序连接到 Oracle 11g。我们有一个非常大的 table,我们在其中保存过去两个月的数据。我们每半小时执行数百万次插入,并在每天结束时执行大量批量删除操作。我们的两列已编入索引,我们肯定有倾斜的列。
问题是我们在阅读此 table 时遇到许多缓慢的响应。因为我不是数据库专家,所以我做了一些研究。我知道绑定变量偷看和游标共享。问题是,即使对于具有特定参数的特定查询,我们也会看到不同的执行时间!
table中没有LOB列,我们用来读取数据的查询并不复杂!它查找特定范围内(已索引列)具有特定名称(已索引列)的所有行。
- 我想知道我们做的大量 insertions/deletions 是否会导致任何问题?
- 我们是否可以考虑进行任何类型的分析以获取有关此问题的更多信息?
我可以看出您的查询时间不一致的几种可能原因。
- 在您的查询 运行ning 期间完成的更新数量。只要您在查询中使用的 table 上有锁,您的查询就必须等待它们被释放。
- table 上的统计数据可能会与如此多的数据操作变得非常不同步。我会尝试两件事。首先,我会找出 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC 作业何时为 运行,并确保每晚在该作业之前执行批量删除。如果这没有帮助,我会要求 DBA 在您的数据库上设置 DBMS_MONITOR 以帮助您解决问题。
一段时间以来,我一直在努力解决性能问题,如果有人能帮助我理解这个问题,我将不胜感激。
我们的应用程序连接到 Oracle 11g。我们有一个非常大的 table,我们在其中保存过去两个月的数据。我们每半小时执行数百万次插入,并在每天结束时执行大量批量删除操作。我们的两列已编入索引,我们肯定有倾斜的列。
问题是我们在阅读此 table 时遇到许多缓慢的响应。因为我不是数据库专家,所以我做了一些研究。我知道绑定变量偷看和游标共享。问题是,即使对于具有特定参数的特定查询,我们也会看到不同的执行时间!
table中没有LOB列,我们用来读取数据的查询并不复杂!它查找特定范围内(已索引列)具有特定名称(已索引列)的所有行。
- 我想知道我们做的大量 insertions/deletions 是否会导致任何问题?
- 我们是否可以考虑进行任何类型的分析以获取有关此问题的更多信息?
我可以看出您的查询时间不一致的几种可能原因。
- 在您的查询 运行ning 期间完成的更新数量。只要您在查询中使用的 table 上有锁,您的查询就必须等待它们被释放。
- table 上的统计数据可能会与如此多的数据操作变得非常不同步。我会尝试两件事。首先,我会找出 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC 作业何时为 运行,并确保每晚在该作业之前执行批量删除。如果这没有帮助,我会要求 DBA 在您的数据库上设置 DBMS_MONITOR 以帮助您解决问题。