Oracle查询速度慢,用户等待时间长

Oracle查询速度慢,用户等待时间长,oracle,oracle10g,performance,Oracle,Oracle10g,Performance,我们有一个缓慢的查询,它的优化器成本值很低,但用户等待时间值很高。这是否仅仅表明存在I/O瓶颈 我们应该为Oracle分配更多内存吗?获取更快的磁盘 注意:这些统计数据是通过查询V$SQL收集的,向Oracle分配更多内存会使数据库更快,因为扩大DB缓存会减少I/O。我们可以感受到使用SQL的潜在改进 但是,不能保证添加内存会改善您的特定查询。这是一种错误的方法,在这种情况下是否有效实际上取决于查询的性质 解释计划中的成本与实际运行时间不匹配有各种各样的原因。一个可能是你的统计数据过时了,而这个

我们有一个缓慢的查询,它的优化器成本值很低,但用户等待时间值很高。这是否仅仅表明存在I/O瓶颈

我们应该为Oracle分配更多内存吗?获取更快的磁盘


注意:这些统计数据是通过查询V$SQL收集的,向Oracle分配更多内存会使数据库更快,因为扩大DB缓存会减少I/O。我们可以感受到使用SQL的潜在改进

但是,不能保证添加内存会改善您的特定查询。这是一种错误的方法,在这种情况下是否有效实际上取决于查询的性质

解释计划中的成本与实际运行时间不匹配有各种各样的原因。一个可能是你的统计数据过时了,而这个计划适合一个小得多的表格。另一个原因是,您正遭受扭曲分布的痛苦,因此您有一个适合某些查询值而不适合其他查询值的计划。或者,您可能正在痛苦地选择绑定变量偷看。然后又可能是硬件问题:坏磁盘、不可靠的互连、糟糕的SAN配置


正如契诃夫所观察到的,性能不佳的查询都以其自身的方式表现不佳。因此,如果您需要更详细的帮助,您必须提供有关特定场景的更多详细信息

为Oracle分配更多内存会使数据库更快,因为扩大DB缓存会减少I/O。我们可以感受到Oracle的潜在改进

但是,不能保证添加内存会改善您的特定查询。这是一种错误的方法,在这种情况下是否有效实际上取决于查询的性质

解释计划中的成本与实际运行时间不匹配有各种各样的原因。一个可能是你的统计数据过时了,而这个计划适合一个小得多的表格。另一个原因是,您正遭受扭曲分布的痛苦,因此您有一个适合某些查询值而不适合其他查询值的计划。或者,您可能正在痛苦地选择绑定变量偷看。然后又可能是硬件问题:坏磁盘、不可靠的互连、糟糕的SAN配置

正如契诃夫所观察到的,性能不佳的查询都以其自身的方式表现不佳。因此,如果您需要更详细的帮助,您必须提供有关特定场景的更多详细信息

在你购买任何东西之前(在你进行任何资本支出之前),多做一些挖掘<代码>解释计划就像天气预报一样。它可能在现实面前崩溃

当有问题的查询正在运行时,您可以做一些事情

(1) 登录服务器计算机并监视CPU周期和磁盘io的使用情况。在Linux中,命令
sar-u 1 120
将为您提供两分钟的cpu%空闲数据。如果您没有空闲的cpu,那么您的查询将过度使用计算周期。类似地,
sar-d1120
将告诉您磁盘IO是否饱和。如果Oracle实例所在的位置是Microsoft的perfmon和Windows任务管理器,则会告诉您相同的信息

(2) 使用Oracle Enterprise Manager控制台。登录数据库,查看会话列表,并查看各种cpu密集型会话。enterprise manager可以向您显示正在运行的查询以及它们使用的确切执行计划。他们还可以告诉你他们是否在做一些非常耗时的事情,比如扫描一张大桌子

详细查看
解释计划
输出。它可能会显示一个完整的表扫描,或者其他一些严重的性能问题,这建议了一个解决方案,比如添加索引。

在购买任何东西之前(在进行任何资本支出之前),请进行更多的挖掘<代码>解释计划就像天气预报一样。它可能在现实面前崩溃

当有问题的查询正在运行时,您可以做一些事情

(1) 登录服务器计算机并监视CPU周期和磁盘io的使用情况。在Linux中,命令
sar-u 1 120
将为您提供两分钟的cpu%空闲数据。如果您没有空闲的cpu,那么您的查询将过度使用计算周期。类似地,
sar-d1120
将告诉您磁盘IO是否饱和。如果Oracle实例所在的位置是Microsoft的perfmon和Windows任务管理器,则会告诉您相同的信息

(2) 使用Oracle Enterprise Manager控制台。登录数据库,查看会话列表,并查看各种cpu密集型会话。enterprise manager可以向您显示正在运行的查询以及它们使用的确切执行计划。他们还可以告诉你他们是否在做一些非常耗时的事情,比如扫描一张大桌子


详细查看
解释计划
输出。它可能会显示一个完整的表扫描,或其他一些严重的性能问题,建议添加索引之类的解决方案。

为了完整性,我会在“成本不可预测-性能”列表中添加另一个原因:CBO错误-不经常发生,但永远不能排除完整性,我想在“成本不可预测-性能”列表中添加另一个原因:CBO错误——虽然不经常发生,但永远也不能排除