`
zhangziyueup
  • 浏览: 1170323 次
文章分类
社区版块
存档分类
最新评论

oracle B*Tree索引的理解 续

 
阅读更多
1 转储索引块信息解释

1.1 通用索引块头

kdxcolev: index level (0 represents leaf blocks) 索引级别,0表示是叶子块

kdxcolok: denotes whether structural block transaction is occurring标示结构块事块是否发生;

kdxcoopc: internal operation code内部操作码

kdxconco: index column count索引列数量,包括ROWID

kdxcosdc: count of index structural changes involving block块中索引结构改变的数量

kdxconro: number of index entries (does not include kdxbrlmc pointer) 索引条目的数量,不包括kdxbrlmc指针

kdxcofbo: offset to beginning of free space within block块中空闲空间的开始位置

kdxcofeo: offset to the end of free space (ie. first portion of block containing index data) 块中空闲空间的结束位置

kdxcoavs: available space in block (effectively area between the two fields above) 块中的可用空间数量(kdxcofbo-kdxcofeo)

1.2 分支头区域

kdxbrlmc:如果索引值小于第一个值(row#0),则为该索引值所在的块地址;

kdxbrsno:最后更改的索引条目;

kdxbrbksz:可使用的块空间。

1.3 叶块头区域

kdxlespl:块拆分时被清除的未提交数据的字节数;

kdxlende:被删除的条目数;

kdxlenxt:下一个叶块的RBA;

kdxleprv:上一个叶块的RBA;

kdxlebksz:可使用的块空间(默认小于分支的可用空间)。

2 使用treedump

今天一位CSDN的网友告诉我,可以treedump使用更方便的查看索引的结构。基于原来的例子,继续学习一下。

2.1 实验

SQL> select object_id from dba_objects where object_name = 'TI';

OBJECT_ID

----------

53432

SQL> alter session set events 'immediate trace name TREEDUMP level 53432';

Session altered

2.2 查看转储文件

----- begin tree dump

branch: 0x280000c 41943052 (0: nrow: 3, level: 1) 对应块12

leaf: 0x280000d 41943053 (-1: nrow: 6 rrow: 6) 对应块13,6行数据(1,10,2,3,31,41)

leaf: 0x280000f 41943055 (0: nrow: 2 rrow: 2) 对应块15,2行数据(5,6)

leaf: 0x280000e 41943054 (1: nrow: 1 rrow: 1) 对应块14,1行数据(7)

----- end tree dump

nrow:索引条目的数量(包含delete项);

rrow:当前块中的索引条目数量(不包含delete项);

level:分支块等级(分支块为1,叶块为0)。

2.3 分析leaf信息

0280000F的十进制数是41943055。

SQL> select to_number('0280000F', 'XXXXXXXX') DECNUM from dual;

DECNUM

----------

41943055

从leaf后的值得到FILE#,BLOCK#。

SQL> select dbms_utility.data_block_address_file(to_number('0280000F', 'xxxxxxxx')) file#,

2 dbms_utility.data_block_address_block(to_number('0280000F', 'xxxxxxxx')) block#

3 from dual;

FILE# BLOCK#

---------- ----------

10 15

3 转储branch块,与上面结论比较

branch块:12

leaf块:13,14,15

SQL> alter system dump datafile 10 block 12;

System altered

row#0[8042] dba: 41943055=0x280000f文件号10,块号15

col 0; len 1; (1): 35 此块中的最小的key值5

col 1; TERM

row#1[8049] dba: 41943054=0x280000e文件号10,块号14

col 0; len 1; (1): 37此块中的最小的key值7

col 1; TERM

分享到:
评论

相关推荐

    Oracle索引(B*tree与Bitmap)的学习总结

    在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...

    B-TREE索引概念.pdf

    oracle优化:B-TREE索引概念。

    Oracle8i 数据库中B-tree索引的维护

    在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。本文只讨论Oracle中最常见的索引,即是B-tree索引。

    oracle索引分析与比较

    在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引 等。本文主要就前6种索引进行分析

    ORACLE数据库索引工作原理

    通过两个图形说明了在oracle数据库中b-tree索引和位图索引的工作原理

    bitmap 索引和 B-tree 索引在使用中如何选择

    现在,我们知道优化器如何对这些技术做出反应,清楚地说明 bitmap 索引和 B-tree 索引各自的最好应用。 在 GENDER 列适当地带一个 bitmap 索引,在 SAL 列上创建另外一个位图索引,然后执行一些查询。在这些列上,用...

    ITPUB电子杂志

    关于shared pool的深入探讨 32bit oracle扩展SGA原理 32bit oracle中SGA_MAX_SIZE与单个进程PGA的制约关系 bitmap索引的一点探究 关于B*tree索引(index)的中度理解 本地管理表空间 倾力大奉献--...

    Oracle表的分类以及相关参数的详解

    oracle中有如下几种类型的表:1、堆组织表(heap organized tables):常用的表类型,以堆的方式管理,当增加数据时,将使用段中第一个适合数据大小的...4、散列聚簇表:和聚簇表相似,但是不是用B*Tree索引聚簇码定位数

    oracle索引测试

    •Dispel many myths associated with Oracle B-Tree Indexes •Explain how to investigate index internals •Explain and prove how Oracle B-Tree Indexes work •Explain when index rebuilds might be ...

    MySQL索引 聚集索引

    MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。

    Oracle数据库索引的维护

     本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包...

    Oracle 索引解析

    Oracle 11g 索引的详细解析!B-tree Index,反向索引,函数索引,bitmap 索引等等的详细介绍。

    Oracle数据库,索引的相关知识

    文章目录1、索引的概念2、索引的类型(面试题)3、创建索引4、修改和重建索引...B树指的是平衡树(Balanced Tree),它是使用平衡算法来管理索引的。 适合B树索引的场合有: 表中存储的数据行数很多。 列中存储的数据的

    Oracle 11g Release (11.1) 索引底层的数据结构

    大概了解 Oracle 索引底层的数据结构,从而更好地理解 Oracle 索引对增、删、改、查的性能。B-树(B-tree) 非索引的结构能满足所有需要,但自平衡的 B-树索引结构更能优化在大数据集上检索的性能。每个 B-树节点...

    oracle索引介绍(图文详解)

    对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一... Doman 索引数据库以外的数据,使用相对较少物理分类B-Tree :normal or re

    B-tree bitmap index

    oracle

    Oracle中的rowid

    ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。...B-Tree索引的每个索引条目具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引

Global site tag (gtag.js) - Google Analytics