赛迪网 > IT技术 数据库 > 精彩更新
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

[Oracle]的大表,小表与全表扫描

发布时间:2006.05.16 02:03     来源:blog    作者:eygle

  通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,那么全表扫描可能仍然是最好的选择。

  从V$SYSSTAT视图中,我们可以查询得到关于全表扫描的系统统计信息: 

SQL> col name for a30
SQL> select name,value from v$sysstat
  2  where name in ('table scans (short tables)','table scans (long tables)');

NAME                                  VALUE
------------------------------     ----------
table scans (short tables)            828
table scans (long tables)             101

  其中table scans (short tables)指对于小表的全表扫描的此时;table scans (long tables)指对于大表的全表扫描的次数。

  从Statspack的报告中,我们也可以找到这部分信息:

Instance Activity Stats for DB: CELLSTAR  Instance: ora8i  Snaps:      20 -  
                                                                             
Statistic                                    Total   per Second    per Trans 
--------------------------------- ---------------- ------------ ------------ 
。。。。。。
table scan blocks gotten                38,228,349         37.0         26.9 
table scan rows gotten                 546,452,583        528.9        383.8 
table scans (direct read)                    5,784          0.0          0.0 
table scans (long tables)                    5,990          0.0          0.0 
table scans (rowid ranges)                   5,850          0.0          0.0 
table scans (short tables)               1,185,275          1.2           0.8 

  通常,如果一个数据库的table scans (long tables)过多,那么db file scattered read等待事件可能同样非常显著,和以上数据来自同一个report的Top5等待事件就是如此:

Top 5 Wait Events                                                            
~~~~~~~~~~~~~~~~~                                    Wait     % Total
Event                                         Waits  Time (cs)   Wt Time
-------------------------------------------- ------------ ------------ -------
log file parallel write                         1,436,993    1,102,188   10.80
log buffer space                                   16,698      873,203    8.56
log file sync                                   1,413,374      654,587    6.42
control file parallel write                       329,777      510,078    5.00
db file scattered read                            425,578      132,537    1.30

  数据库内部,很多信息和现象都是紧密相关的,只要我们加深对于数据库的了解,在优化和诊断数据库问题时就能够得心应手。

  Oracle通过一个内部参数_small_table_threshold来定义大表和小表的界限。缺省的该参数等于2%的Buffer数量,如果表的大小小于该参数定义,Oracle认为该表为小表,否则Oracle认为该表为大表。

  我们看一下Oracle9iR2中的情况:

SQL> @@GetParDescrb.sql
Enter value for par: small
old   6:    AND x.ksppinm LIKE '%&par%'
new   6:    AND x.ksppinm LIKE '%small%'

NAME                    VALUE                DESCRIB
------------------------------ -------------------- ------------------------------------------------------------
_small_table_threshold         200                  threshold level of table size for direct reads

  以上数据库中,200正好约为Buffer数量的2%:

SQL> show parameter db_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                        big integer 83886080
SQL> select (83886080/8192)*2/100 from dual;

(83886080/8192)*2/100
---------------------
                204.8

  所以要区分大小表(Long/Short)是因为全表扫描可能引起Buffer Cache的抖动,缺省的大表的全表扫描会被置于LRU的末端,以期尽快老化,减少Buffer的占用。从Oracle8i开始,Oracle的多缓冲池管理技术(Default/Keep/Recycle池)给了我们另外一个选择,对于不同大小、不同使用频率的数据表,从建表之初就可以指定其存储Buffer,以使得内存使用更加有效。


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Oracle启动脚本处理LD_LIBRARY_PATH环境变量 (05-15) · 启动Oracle常见疑难问题分析 (05-15)
· 安装Oracle加载数据库错误areasQueries的解决 (05-15) · 成就DBA职业生涯 (05-15)
· 在RedHat 7.0下Oracle 8.1.6 的安装实例 (05-15) · Oracle性能究极优化 下 (05-15)
· Oracle性能究极优化 中 (05-15) · Oracle性能究极优化 上 (05-15)
· 在UnixWare7.1.1上安装Oracle8i (05-15) · Oracle数据库几种启动方式 (05-15)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管