v$sysstat中workarea executions - optimal 与具体操作的联系。

2020-06-28 00:00:00 数据库 专区 源码 调试 研究
optimal 一般来说,意义是指所有操作都在内存中进行,就叫 Optimal 。 真的是这样吗,让我们来试试: [php] 在某一个会话中: scott@MYTWO> connect scott/ifclwx 已连接。 scott@MYTWO> set autotrace traceonly exp stat; scott@MYTWO> select distinct * from big_table; 已选择1000000行。 已用时间: 00: 01: 19.07 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=33535 Card=1000000 Bytes=100000000) 1 0 SORT (UNIQUE) (Cost=33535 Card=1000000 Bytes=100000000) 2 1 TABLE ACCESS (FULL) OF 'BIG_TABLE' (Cost=2571 Card=1000000 Bytes=100000000) Statistics ---------------------------------------------------------- 654 recursive calls 4 db block gets 26505 consistent gets 54000 physical reads 120 redo size 64834270 bytes sent via SQL*Net to client 733829 bytes received via SQL*Net from client 66668 SQL*Net roundtrips to/from client 10 sorts (memory) 1 sorts (disk) 1000000 rows processed 在另一个会话中观察工作区的占用情况: sys@MYTWO> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- -------------- _pga_max_size big integer 524288000 pga_aggregate_target big integer 10485760 另外一个隐藏参数的值: NAME VALUE ISDEFAULT ISMOD ISADJ ---------------------------------------- ------------------------- --------- ---------- ----- _smm_max_size 512 FALSE FALSE FALSE sys@MYTWO> select * from v$sysstat where name like 'workarea executions%'; STATISTIC# NAME CLASS VALUE ---------- ---------------------------------------- ---------- -------------- 227 workarea executions - optimal 64 319 228 workarea executions - onepass 64 0 229 workarea executions - multipass 64 0 [/php] 我的疑惑: 刚才的明明有一个磁盘排序,为什么在V$SYSSTAT中 workarea executions - onepass 或 workarea executions - multipass 没有增加。 ××××××××××××××××××××××××××××××××××××××××××××××××××

相关文章