WEB开发网
开发学院数据库Oracle Oracle数据库中索引树的结构与块尺寸 阅读

Oracle数据库中索引树的结构与块尺寸

 2007-05-12 12:22:29 来源:WEB开发网   
核心提示: 根据《Oracle数据库管理员认证:“Oracle 认证数据库管理专家”教师指南》一书的作者Christopher Foot的一篇文章,更大的块尺寸在某些情况下非常有帮助:“更大的块尺寸意味着在B-树索引的分支结点中有更多的空间来存储符号键,Oracle

根据《Oracle数据库管理员认证:“Oracle 认证数据库管理专家”教师指南》一书的作者Christopher Foot的一篇文章,更大的块尺寸在某些情况下非常有帮助:

“更大的块尺寸意味着在B-树索引的分支结点中有更多的空间来存储符号键,从而可以降低树的高度和提高索引查询的性能。”

在任何情况下,似乎有证据表明块尺寸影响树的结构,这为数据块影响树的结构提供了有力支持。

你可以使用大数据块(16-32)缓冲区来存储来自作为重复性大规模扫描对象的索引或表中的数据。这真的会提高性能么?一个小的但透漏内情的测试能回答这个问题。

在这个测试中,将对某个使用8K数据块尺寸的Oracle 9i数据库执行以下查询,这个数据库同时也使用16K缓冲区和16K大小的表空间。

select
  count(*)
from 
  eradmin.admission
where
  patient_id between 1 and 40000;

表eradmin.admission含有150,000行数据,并在patient_id列上建立了一个索引。对上面的查询语句执行EXPLAIN命令揭示出:它使用索引范围扫描来产生想要的目的结果:

Execution Plan
SELECT STATEMENT Optimizer=CHOOSE
(Cost=41 Card=1 Bytes=4)
  1  0  SORT (AGGREGATE)
  2  1   INDEX (FAST FULL SCAN) OF 'ADMISSION_PATIENT_ID'
       (NON-UNIQUE) (Cost=41 Card=120002 Bytes=480008)

使用位于一个标准8K表空间的索引来执行这个查询(两次以消除分析活动并缓冲任何数据)产生了以下实时统计信息:

Statistics
     0 recursive calls
     0 db block gets
    421 consistent gets
     0 physical reads
     0 redo size
    371 bytes sent via SQL*Net to client
    430 bytes received via SQL*Net from client
     2 SQL*Net roundtrips to/from client
     0 sorts (memory)
     0 sorts (disk)
     1 rows processed

上一页  1 2 3 4  下一页

Tags:Oracle 数据库 索引

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