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索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...
oracle优化:B-TREE索引概念。
在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。本文只讨论Oracle中最常见的索引,即是B-tree索引。
在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引 等。本文主要就前6种索引进行分析
通过两个图形说明了在oracle数据库中b-tree索引和位图索引的工作原理
现在,我们知道优化器如何对这些技术做出反应,清楚地说明 bitmap 索引和 B-tree 索引各自的最好应用。 在 GENDER 列适当地带一个 bitmap 索引,在 SAL 列上创建另外一个位图索引,然后执行一些查询。在这些列上,用...
关于shared pool的深入探讨 32bit oracle扩展SGA原理 32bit oracle中SGA_MAX_SIZE与单个进程PGA的制约关系 bitmap索引的一点探究 关于B*tree索引(index)的中度理解 本地管理表空间 倾力大奉献--...
oracle中有如下几种类型的表:1、堆组织表(heap organized tables):常用的表类型,以堆的方式管理,当增加数据时,将使用段中第一个适合数据大小的...4、散列聚簇表:和聚簇表相似,但是不是用B*Tree索引聚簇码定位数
•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数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。
本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包...
Oracle 11g 索引的详细解析!B-tree Index,反向索引,函数索引,bitmap 索引等等的详细介绍。
文章目录1、索引的概念2、索引的类型(面试题)3、创建索引4、修改和重建索引...B树指的是平衡树(Balanced Tree),它是使用平衡算法来管理索引的。 适合B树索引的场合有: 表中存储的数据行数很多。 列中存储的数据的
大概了解 Oracle 索引底层的数据结构,从而更好地理解 Oracle 索引对增、删、改、查的性能。B-树(B-tree) 非索引的结构能满足所有需要,但自平衡的 B-树索引结构更能优化在大数据集上检索的性能。每个 B-树节点...
对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一... Doman 索引数据库以外的数据,使用相对较少物理分类B-Tree :normal or re
oracle
ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。...B-Tree索引的每个索引条目具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引