oracle | idouba

Archive | oracle RSS feed for this section

B树在数据库索引中的应用剖析(原稿)

引言

关于数据库索引,随便Google一个Oracle indexMysql index总有大量的结果出来,其中不乏某某索引之n条经典建议。笔者认为,较之借鉴,在搞清楚了自己的需求的基础上,对备选方案的原理有个尽可能深入全面的了解会更有利于我们的选择和决策。因为某种方案或者技术呈现出某种优势(包括可能没有被介绍到但一定存在的限制),不是定义出来的,而是因为其实现机制决定的。就像LinkedList和ArrayList分别适用于什么应用不是Document里面定义的,是由其本身的结构决定的。数据库的索引也是一样,不是厂商的白皮书这样规定,而是其原理决定的。

本文只是重点介绍数据结构中经典的树(B树)结构在数据库索引中的经典应用,也会涉及到几种数据库中对此支持的细微不同,以期比较完整的描述实现原理。最终会发现这几种被不同数据库厂商冠以不同名字东西原理上其实差不多,理论上其实是一个东西。文[......]

阅读全文

Tags: , , , , , , ,

Comments { 1 }

【译】Oracle 索引(Oracle? Database Concepts)

比较完整权威的oracle的索引的介绍还是在来自于Oracle? Database Concepts翻译下。

@todo

Indexes and Index-Organized Tables

This chapter discusses indexes, which are schema objects that can speed access to table rows, and index-organized tables, which are tables stored in an index structure.

This chapter contains the following sections:

Overview of[......]

阅读全文

Tags: , ,

Comments { 0 }

oracle索引原理精简总结

结合使用整理Oracle的索引,主要权威的来自于Oracle? Database ConceptsOracle? Database Performance Tuning Guide

尝试用最少的字数介绍oracle的几种常用索引原理,主要是想简单分析其存储结构来说明其检索方式,和解释为什们某种索引使用与某种场合。(数据结构中最简单的ArrayList和LinkedList的使用场景)。阐述原因只有一个,就是因为其存储结构决定的。

B树索引?(默认类型)

存储结构:

B+树,不多描述。和其他几种关系数据库一样,就是根据索引列(一个或多个)来构造一个B+树来存储索引。非叶子节点两个区域:存储下级子节点的值的范围,和到对应子节点地址(典型B+树的结构),主要作用是导航;叶子节点存储索引的键值和行的ROWID。另外,索引的叶子节点间构成了一个双向链表。类似mysql的myisam引擎[......]

阅读全文

Tags: ,

Comments { 1 }

oracle实践问题记录

记录在操作中的很细小的问题。非常不高大上,但是比较有用。

一、在数据插入中出现如下错,数据量比较大

ORA-30036 无法按8扩展段(在还原表空间“UNDO_RRS1”中)

表示undo表空间已满,解决办法是:给undo表空间增加文件:

然后通过如下脚本可以产看各个表空间的使用情况。

 

二、 在为表空间添加文件的指令中出现如下错:

ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks

?出现这个错误的原因是要调整的大小超出了Oracle database file size的限制,文档里说这个最大size “Ope[......]

阅读全文

Tags:

Comments { 0 }

Hash join算法原理

转载一篇介绍Oracle’ hash Join的文章,描述笔记详细。其实其他几种关系数据库中支持hash join的,其工作原理也都类似。

自从 oracke 7.3 以来, oracle 提供了一种新的 join 技术,就是 hash join 。 Hash Join 只能用于相等连接,且只能在 CBO 优化器模式下。相对于 nested loop join , hash join 更适合处理大型结果集。 Hash join 不需要在驱动表上存在索引。

一.? ?? ??Hash Join?概述

Hash join 算法的一个基本思想就是根据小的 row sources( 称作 build input ,我们记较小的表为 S ,较大的表为 B) 建立一个可以存在于hash area 内存中的 hash table ,然后用大的 row sources( 称作 probe inp[......]

阅读全文

Tags: , ,

Comments { 0 }