SQL> select * from v$version;

BANNER
-----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production SQL> show sga Total System Global Area 3423965184 bytes
Fixed Size 2180544 bytes
Variable Size 1929382464 bytes
Database Buffers 1476395008 bytes
Redo Buffers 16007168 bytes SQL> set linesize 120
SQL> col name for a30
SQL> col value for a20
SQL> col pdesc for a50
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.indx = y.indx AND x.ksppinm LIKE '%small_table_threshold%'; NAME VALUE PDESC
------------------------------ -------------------- --------------------------------------------------
_small_table_threshold 3467 threshold level of table size for direct reads SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.indx = y.indx AND x.ksppinm LIKE '%_serial_direct_read%'; NAME VALUE PDESC
------------------------------ ------------------------------ --------------------------------------------------
_serial_direct_read FALSE enable direct read in serial SQL> alter session set "_serial_direct_read"=true; SQL> alter session set events '10949 trace name context off'; SQL> create table dt as select * from dba_objects; SQL> insert into dt select * from dt; SQL> insert into dt select * from dt; SQL> select count(*) from dt; COUNT(*)
----------
290364 SQL> select blockS from user_segments where segment_name='DT'; BLOCKS
----------
4224 SQL> alter session set events '10046 trace name context forever,level 8'; 会话已更改。 SQL> alter system flush buffer_cache; 系统已更改。 SQL> select count(*) from dt; COUNT(*)
----------
290364 WAIT #3: nam='reliable message' ela= 160 channel context=8795194841928 channel handle=8795194796064 broadcast message=8795145225720 obj#=74914 tim=19703281481
WAIT #3: nam='enq: KO - fast object checkpoint' ela= 1109 name|mode=1263468550 2=65555 0=1 obj#=74914 tim=19703282668
WAIT #3: nam='direct path read' ela= 4401 file number=4 first dba=57635 block cnt=13 obj#=74914 tim=19703287486
WAIT #3: nam='direct path read' ela= 1424 file number=4 first dba=57649 block cnt=15 obj#=74914 tim=19703289236
WAIT #3: nam='direct path read' ela= 1183 file number=4 first dba=57665 block cnt=15 obj#=74914 tim=19703290787
WAIT #3: nam='direct path read' ela= 1403 file number=4 first dba=57681 block cnt=15 obj#=74914 tim=19703292472
WAIT #3: nam='direct path read' ela= 1181 file number=4 first dba=57697 block cnt=15 obj#=74914 tim=19703293980
WAIT #3: nam='direct path read' ela= 1261 file number=4 first dba=57713 block cnt=15 obj#=74914 tim=19703295567
WAIT #3: nam='direct path read' ela= 1232 file number=4 first dba=61825 block cnt=15 obj#=74914 tim=19703297126
WAIT #3: nam='direct path read' ela= 548 file number=4 first dba=61841 block cnt=15 obj#=74914 tim=19703298609
WAIT #3: nam='direct path read' ela= 8324 file number=4 first dba=61954 block cnt=126 obj#=74914 tim=19703307811
WAIT #3: nam='direct path read' ela= 7573 file number=4 first dba=62082 block cnt=126 obj#=74914 tim=19703317154 SQL> delete from dt where rownum<140000; 已删除139999行。 SQL> alter table dt enable row movement; 表已更改。 SQL> alter table dt move tablespace users; 表已更改。 SQL> select blocks from user_segments where segment_name='DT'; BLOCKS
----------
2304 SQL> alter system flush buffer_cache; 系统已更改。 SQL> select count(*) from dt; COUNT(*)
----------
290364

PARSING IN CURSOR #7 len=23 dep=0 uid=91 oct=3 lid=91 tim=20802442129 hv=4123149654 ad='7ffc8c72548' sqlid='4paafg3uw4jaq'
select count(*) from dt
END OF STMT
PARSE #7:c=0,e=124,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=341227488,tim=20802442128
EXEC #7:c=0,e=43,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=341227488,tim=20802442340
WAIT #7: nam='SQL*Net message to client' ela= 4 driver id=1111838976 #bytes=1 p3=0 obj#=0 tim=20802442426
WAIT #7: nam='db file sequential read' ela= 8896 file#=4 block#=57634 blocks=1 obj#=74914 tim=20802451409
WAIT #7: nam='direct path read' ela= 805 file number=4 first dba=57635 block cnt=13 obj#=74914 tim=20802452734
WAIT #7: nam='direct path read' ela= 1085 file number=4 first dba=57649 block cnt=15 obj#=74914 tim=20802454106
WAIT #7: nam='direct path read' ela= 422 file number=4 first dba=57665 block cnt=15 obj#=74914 tim=20802454836
WAIT #7: nam='direct path read' ela= 544 file number=4 first dba=57681 block cnt=15 obj#=74914 tim=20802455670
WAIT #7: nam='direct path read' ela= 564 file number=4 first dba=57697 block cnt=15 obj#=74914 tim=20802456506
WAIT #7: nam='direct path read' ela= 492 file number=4 first dba=57713 block cnt=15 obj#=74914 tim=20802457278
WAIT #7: nam='direct path read' ela= 1183 file number=4 first dba=61825 block cnt=15 obj#=74914 tim=20802458751
WAIT #7: nam='direct path read' ela= 661 file number=4 first dba=61841 block cnt=15 obj#=74914 tim=20802460256

 

缺省情况下Oracle认为在2%的cache buffer以下的表格认为是小表,在FTS操作中被放到MRU end。 
在_small_table_threshold以上的表格标记为大表,FTS操作结果被放置到LRU end。也就是说Oracle仅仅缓冲一次操作的结果。

The default is not 5 blocks; it is 2% of db_block_buffers with a minimum of 4 blocks. The effect is exactly as you describe. Small tables are cached at the MRU end of the cache by default. The statistic is incremented for all logical small table scans, even against fully cached tables. It is also incremented for scans of small tables for which the NOCACHE keyword has been specified. It is not however incremented for large tables for which the CACHE keyword has been specified.

This parameter is session modifiable and system modifiable with deferred semantics. If changed dynamically, the parameter name needs to be enclosed in quotes to protect the leading underscore, as follows.

alter session set "_small_table_theshold" = 100;

需要指出的是该参数可以动态调整,其默认值不是业界所认为的5 blocks,而是小于等于db_cache_size*2%或者是4*blocksize(当db_cache_size小于200个blocks时),假设2G的Cache buffer,那么2G*2%=40m,这样在40m以下的表格都可能被认为小表。假设表格平均行长为200字节,8k块,具有5120个块。平均可用空间8000,这样40m的表格有204800行。这个数字还是颇为可观的

Oracle 参数之_small_table_threshold的更多相关文章

  1. 【体系结构】Oracle参数介绍

    [体系结构]Oracle参数介绍 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...

  2. [Oracle] 参数修改小结

    v$parameter Oracle参数的修改比较复杂,有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数修改后马上生效(不需要重启),有些参数则必须重启才能生效,那么 ...

  3. 各种oracle参数查询语句

    各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...

  4. Oracle参数设置之set与reset的实际案例

    Oracle参数设置之set与reset的实际案例 环境:Oracle 10.2.0.5 RAC 需求:节点1的aq_tm_processes要求恢复默认,节点2设置要求保持不变 1.构建测试环境 2 ...

  5. Oracle 参数文件及相关操作介绍

    Oracle 参数文件及相关操作介绍 by:授客 QQ:1033553122 1.服务器参数文件 服务器参数文件是一个二进制文件,作为初始化参数的存储仓库.实例运行时,可用ALTER SYSTEM来改 ...

  6. Oracle参数修改是否需要重启等

    Oracle参数修改小结Oracle中有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数不需要重启就能马上生效,有些参数必须重启才能生效,那么如何知道这些信息呢?可以从 ...

  7. ORACLE参数max_shared_servers空值与零的区别

    ORACLE数据库中的参数max_shared_servers,这是一个DBA很熟悉的参数,但是这个参数max_shared_servers为空值与为0有区别吗?这个细节可能很多人都没有注意过.如下所 ...

  8. oracle参数配置

    一.Oracle LARGE_POOL_SIZE大小设置值多少 java_pool_size:以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法, ...

  9. oracle参数与启停

    oracle随系统启动而启动 cs65-64桌面版orcle-11.2.0.4 启动监听器,后台进程,OEM. 注意: 如果只做一和三,只能启动后台进程,监听器不启动,如果只做二和三,只能启动监听器, ...

随机推荐

  1. Set集合对象比较两个元素的方法

    Set集合对象比较两个元素的方法并不是根据“equals()”方法的返回值来比较.而是用“hashCode()”方法来进行判断.只要两个元素的“hashCode()”方法的返回值相同,就认为两个元素相 ...

  2. 为OpenResty增加nginx_upload_module模块

    1.下载 http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz 或 http://pan.baidu.com/s ...

  3. ACM:统计难题 解题报告-字典树(Trie树)

    统计难题 Time Limit:2000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Submit Status ...

  4. 【BZOJ】1225: [HNOI2001] 求正整数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1225 题意:给一个数n,求一个最小的有n个约数的正整数.(n<=50000) #include ...

  5. iOS 网络框架编写总结

    一,常用 1> 不错的处理接收到的网络图片数据的方法 id img= ISNSNULL(pic)?nil:[pic valueForKey:@"img"]; NSString ...

  6. java画图程序_图片用字母画出来

    最近在研究怎样将图片用字母在文本编辑工具中“画”出来. 你看了这个可能还不知道我想说什么? 我想直接上图,大家一定就知道了 第一张:小猫 原图:http://www.cnblogs.com/hongt ...

  7. man page分類與說明

    轉載自http://itzone.hk/article/article.php?aid=200407152225014657 (如有侵權,請留言或來信告知) 前言 Man page是每位程式設計員及U ...

  8. Node.js 手册查询-1-核心模块方法

    Node.js 学习手册 标签(空格分隔): node.js 模块 核心模块 核心模块是被编译成二进制代码,引用的时候只需require表示符即可 os 系统基本信息 os模块可提供操作系统的一些基本 ...

  9. 前端自动化工具 -- grunt 使用简介

    grunt作为一个前端构建工具,有资源压缩,代码检查,文件合并等功能. 下面就简单了解grunt的使用. 一.环境配置 grunt是基于nodejs的,所以需要一个 nodejs 环境,未了解的可以  ...

  10. Webform购物车(用Session存储,页面传值)

    购物车主要实现的功能: ①在主页面可以将所有商品显示出来,包括价格,库存. ②点击购买可以累加产品,如果是同一种产品,只会累加每种产品的数量. ③查看购物车,可以查看明细,包括所购物品的名称,价格,数 ...