WEB开发网
开发学院数据库Oracle Oracle的大表,小表与全表扫描 阅读

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

 2007-05-10 12:16:30 来源:WEB开发网   
核心提示:通常对于小表,Oracle建议通过全表扫描进行数据访问,Oracle的大表,小表与全表扫描,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,table scan blocks gotten38,228,349 37.0 26.9table scan rows gotten 546,45

通常对于小表,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等待事件就是如此:

1 2  下一页

Tags:Oracle 扫描

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接