据我所知,Oracle在PGA中执行排序操作。但是它也可以在缓冲区高速缓存或共享池等中执行此操作吗?如果是这样,它将在哪些条件下在这些区域中排序?
不,它始终在PGA中。但是这里存在语义问题。
例如,如果使用全自动内存管理,那么我们保留在共享内存区域和私有内存区域之间随机播放数据的权利。因此,曾经位于共享内存中的同一物理内存可能会在其生命后期变成私有内存。但是到那一刻……现在是PGA。
此外,如果我们可以按请求的顺序读取数据而无需对数据进行排序,则由于我们不需要对数据进行排序,因此它将从缓冲区缓存中“预排序”传递给客户端。
但是正如我所说-只是解释。对于所有密集的目的,您都可以假定PGA是进行排序的地方。