Oracle 10g直接路径写入/读取等待事件

Oracle 10g直接路径写入/读取等待事件,oracle,performance,oracle10g,Oracle,Performance,Oracle10g,我的10g oracle prod数据库存在性能问题。一些查询在20秒内开始返回,以毫秒为单位。我得到的AWR报告和top3等待事件如下所示。我搜索了一下,但还是不明白 有人能解释这件事吗?谢谢 Event Waits Time(s) Avg Wait(ms) % Total Call Time Wait Class ---------------------- ---------- -----

我的10g oracle prod数据库存在性能问题。一些查询在20秒内开始返回,以毫秒为单位。我得到的AWR报告和top3等待事件如下所示。我搜索了一下,但还是不明白

有人能解释这件事吗?谢谢

Event                       Waits           Time(s)     Avg Wait(ms)    % Total Call Time   Wait Class
----------------------      ----------      -------     ------------    -----------------   ----------  
direct path write temp      11,941,557      866,004     73              29.8                User I/O      FEBRUARY
direct path write temp      16,197,445      957,129     59              17.2                User I/O      MARCH

db file scattered read      5,826,190       58,095      10              2.0                 User I/O      FEBRUARY
db file scattered read      10,128,657      70,408      7               1.3                 User I/O      MARCH

direct path read temp       34,197,762      324,663     9               11.2                User I/O      FEBRUARY
direct path read temp       88,688,686      507,715     6               9.1                 User I/O      MARCH

两个等待事件与排序相关:
直接路径写入临时值
直接路径读取临时值
。这表明磁盘上的排序比内存中的排序要多;磁盘I/O总是较慢

那么,内存分配使用方面发生了什么变化?也许您需要重新访问SORT_AREA_SIZE或PGA_AGGREGATE_TARGET init参数的值(取决于您是否使用自动PGA内存)。下面是一个计算内存/磁盘排序比率的查询:

SELECT 100 * (mem.value - dsk.value)/(mem.value) AS sort_ratio 
FROM v$sysstat mem
     cross join v$sysstat dsk 
WHERE mem.name = 'sorts (memory)' 
AND dsk.name ='sorts (disk)'
在OLTP应用程序中,我们预计这将超过95%

另一件事是,您需要查看运行速度慢得多的特定查询,而不是查看宏事件。他们发生了什么变化?更多的数据?新索引还是删除的索引?刷新的统计数据


“排序比-------99.9985462”

因此,排序较高,但不太高。您需要关注特定的查询

“三月份,我们开始使用phyton应用程序进行一些新的查询。原因可能是这样的?”


可能是。当我们的系统表现出不同的行为时,应用程序更改始终是主要的疑点

一切都没有改变。没有任何新的或删除的索引。但在三月份,我们开始使用phyton应用程序进行一些新的查询。原因可能是这样的?并且逻辑读取部分的另一个段包含新的和如此大的值。我是否应该理解数据库上开始的新查询以及此查询的原因?排序比率------------99.9985462