索引-关于B-tree 的bulkloading的构造方法的疑问

问题描述

关于B-tree 的bulkloading的构造方法的疑问

关于B-tree的构造,我见过的很多书包括文章都是通过线性insert操作完成,http://en.wikipedia.org/wiki/B-tree里面就提到:it is frequently useful to build a B-tree to represent a large existing collection of data and then update it incrementally using standard B-tree operations. In this case, the most efficient way to construct the initial B-tree is not to insert every element in the initial collection successively, but instead to construct the initial set of leaf nodes directly from the input, then build the internal nodes from these. This approach to B-tree construction is called bulkloading.

但这种方法好像事先必须是有序的。

请问,在真实开发环境里面到底是如何构建B-tree索引的?

时间: 2024-09-04 22:31:25

索引-关于B-tree 的bulkloading的构造方法的疑问的相关文章

MySQL · TokuDB · TokuDB索引结构--Fractal Tree

背景介绍 TokuDB采用的是Fractal Tree作为索引的数据组织方式.它是一种面向磁盘I/O优化的数据结构,采用"分期偿还"策略减少在数据插入过程中从root节点到leaf节点的搜索过程.这种搜索过程可以简称为locate_position,就是寻找要插入key在Tree中位置的过程. 一般B+Tree的插入过程分为两个部分: Locate_position: 从root开始使用binary search方法递归地寻找应该插入到哪个子节点上,直到在leaf节点找到应该插入的位置

TokuDB索引结构--Fractal Tree

背景介绍 TokuDB采用的是Fractal Tree作为索引的数据组织方式.它是一种面向磁盘I/O优化的数据结构,采用"分期偿还"策略减少在数据插入过程中从root节点到leaf节点的搜索过程.这种搜索过程可以简称为locate_position,就是寻找要插入key在Tree中位置的过程. 一般B+Tree的插入过程分为两个部分: Locate_position: 从root开始使用binary search方法递归地寻找应该插入到哪个子节点上,直到在leaf节点找到应该插入的位置

大数据索引技术 - B+ tree vs LSM tree

MySQL索引背后的数据结构及算法原理, http://www.codinglabs.org/html/theory-of-mysql-index.html HBase Architecture, http://duanple.blog.163.com/blog/static/70971767201191661620641/ 数据库如何抵抗随机IO:问题.方法与现实, http://wangyuanzju.blog.163.com/blog/static/13029201132154010987

Oracle B*tree索引和Oracle Bitmap索引有什么区别

(1) 建立B*tree索引 3:11:08 SQL>create index emp1_job_ind on emp1(job); (2)分析索引结构 3:11:08 SQL> ANALYZE INDEX EMP1_JOB_IND VALIDATE STRUCTURE; Index analyzed. (3)查看索引存储信息 03:11:41 SQL> SELECT BLEVEL,LEAF_BLOCKS,NUM_ROWS FROM USER_INDEXES 03:12:12   2  

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

在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引.(1).与索引相关视图查询DBA_INDEXES视图可得到表中所有索引的列表:访问USER_IND_COLUMNS视图可得到一个给定表中被索引的特定列.(2).组合索引概念当某个索引包含有多个已索引的列时,称这个索引为组合(concatented)索引.注意:只有在使用到索引的前导索引时才可以使用组合索引(3).B*T

【索引】反向索引引起排序

   反向索引是B*Tree索引的一个分支,它的设计是为了运用在某些特定的环境下的.Oracle推出它的主要目的就是为了降低在并行服务器(Oracle Parallel Server)环境下索引叶块的争用.当B*Tree索引中有一列是由递增的序列号产生的话,那么这些索引信息基本上分布在同一个叶块,当用户修改或访问相似的列时,索引块很容易产生争用.反向索引中的索引码将会被分布到各个索引块中,减少了争用.也是由于索引被散布在不同的索引块中,会引起不必要的排序. SQL> create table t

MySQL索引设计背后的数据结构及算法详解

一.B-Tree基础知识   B-Tree(多路搜索树)是一种常见的数据结构.使用B-Tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常认为是Balance的简称.这个数据结构一般用于数据库的索引,综合效率较高.目前很多数据库产品的索引都是基于B+Tree结构.MySQL也采用B+Tree,是B-Tree的一个变种,其实特性相差不大,理解了B-Tree也就懂了B+Tree.   1.一颗M阶B-Tree具有的特性[熟记于心]   1) 根结点的孩子数>=2(前提是树高度

PostgreSQL GIN索引实现原理

标签 PostgreSQL , GIN , 内核 , 实现原理 , PostgreSQL数据库内核分析 背景 本文参考并扩展自如下文档,修正了一些内容(大多数是由于版本不同造成的差异) <PostgreSQL数据库内核分析> ( 成书较早,大量内容基于8.4的代码编写 ) 以及 http://zisedeqing.blog.163.com/blog/static/95550871201621623458216/ ( 大量内容参考自 PostgreSQL数据库内核分析 ) 术语 本文适用的一些术

PostgreSQL 10.0 preview 性能增强 - GIN索引vacuum锁降低

标签 PostgreSQL , 10.0 , GIN vacuum , 锁范围降低 背景 如果你发现你的CPU没怎么用,但是压力就是上不去,很大可能是锁等待造成的(perf可以观察),锁在数据库优化中是一个比较永恒的话题. 以往在vacuum GIN索引clean posting tree时,需要锁整个posting tree,10.0改进了这块的锁,现在只锁一个subtree. 在较大的GIN KEY被更新后,清除posting tree时,锁冲突更小了. Reduce page lockin