Oracle 数据库是否在 Buffer Cache 或 PGA 中执行排序?

Does Oracle database performs sort in Buffer Cache or PGA?

据我所知,Oracle在PGA中进行排序操作。但它是否也在缓冲区缓存或共享池等中执行此操作?如果有,它在什么条件下对这些区域进行排序?

不,它总是在 PGA 中。但是这里有语义问题。

例如,如果使用全自动内存管理,那么我们保留在共享内存区和私有内存区之间shuffle数据的权利。因此,曾经在共享内存中的同一块物理内存在其生命周期的后期可能会变成私有内存。但是到那个时候……现在是 PGA。

此外,如果我们可以按请求的顺序读取数据而不需要对其进行排序,那么它将 "pre sorted" 从缓冲区缓存传送到客户端,因为我们从来不需要对它进行排序。

但正如我所说 - 这只是解释。对于所有密集的目的,您可以假设 PGA 是排序发生的地方。