10G Fast Dual特性
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2008/12/10g-fast-dual.html
链接:http://www.dbaroad.me/archives/2008/12/10g-fast-dual.html
从10G开始引入了FAST DUAL的概念,一些通过dual表计算,如select 1 from dual; select sysdate from dual; 已经不再需要访问data block了:
sys@ORCL>select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for Linux: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production sys@ORCL> sys@ORCL>select 1 from dual; 1 ---------- 1 Execution Plan ---------------------------------------------------------- Plan hash value: 1388734953 ----------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | ----------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 | | 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 | ----------------------------------------------------------------- Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 404 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed |
这一特性是通过隐含参数_fast_dual_enabled进行控制的:
sys@ORCL>@getpar Enter value for par: fast_dual NAME VALUE ISDEFAULT ISMOD ISADJ --------------------- ----------- --------- ---------- ----- _fast_dual_enabled TRUE TRUE FALSE FALSE |
另外,如果是使用select * from dual;仍然会去访问data block,产生逻辑读:
sys@ORCL>select * from dual; D - X Execution Plan ---------------------------------------------------------- Plan hash value: 272002086 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------- Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 3 consistent gets 0 physical reads 0 redo size 407 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed |
关于9i Dual表的优化,可以看另一篇文章:9i Dual表的优化
— The End —
关键字: 基础知识


站内搜索