计划输出中的 OMem 和 1Mem 列是什么?

Dav*_*žic 5 oracle execution-plan

计划输出,例如

SELECT *  FROM   TABLE(DBMS_XPLAN.DISPLAY_CURSOR( '' ,NULL,'ALLSTATS  LAST'));
Run Code Online (Sandbox Code Playgroud)

有列 OMem 和 1Mem。它们的含义是什么?我找不到任何关于它们的参考或文档,只有这个网页,声称(或询问):

OMem:- 估计的最佳内存 (PGA) 大小,以在内存中执行操作。

1Mem:- 单次传递到磁盘时执行操作的估计大小?

Bal*_*app 7

OMem - 仅在内存中执行操作所需的估计内存量。这也称为最优执行。

1Mem - 一次执行操作所需的估计内存量(写入和读取磁盘(临时)仅一次)。这称为一次性执行。

多遍执行是将相同的数据多次写入磁盘和从磁盘读取的地方。

想想排序,数据库必须在一个小的 PGA/排序区域中对大量数据进行排序。

由于您使用 ALLSTATS LAST 查询计划统计信息,因此有一些额外的列:

Used-Mem - 实际用于此操作的内存量。此栏中括号中还有一个数字。如果数字为 0,则它是最佳执行,仅使用内存而没有临时空间。如果数字是 1,那么它是一次执行。如果该数字大于 1,则为多遍执行,该数字即为遍数。

Used-Tmp - 用于此操作的临时空间量。

以下是关于从第 28 页开始的执行过程的演示:http : //www.nocoug.org/download/2003-08/how_cbo_works.ppt