爱游戏平台登录入口

  • Oracle 11g Release (11.1) 索引底层的数据布局
  • 2018年02月25日
  • 搜集搜集

本文内容 B-树(B-tree) 散列(Hash) k-d 树(k-d tree) 点四叉树(Point Quadtree)

本文先容对于 Oracle 索引的布局。大要领会 Oracle 索引底层的数据布局,从而更爱游戏平台登录入口地懂得 Oracle 索引对增、删、改、查的机能。

B-树(B-tree)

非索引的布局能知足一切须要,但自均衡的 B-树索引布局更能优化在大数据集上检索的机能。每一个 B-树节点具备多个键和指针。特定 B-树撑持的一个节点爱游戏平台登录入口键的最大数目是那颗树的挨次。每一个节点爱游戏平台登录入口具备一个潜伏的 order+1 指针,指向比它更低一级的节点。

比方,如图 1 所示,order=2 的 B-树具备三个指针,别离指向:比它第一个键小的子节点(最左侧的指针);比它第一个键大,比第二个键小的子节点(爱游戏平台登录入口心的指针);比它第二个键大的子节点(最右侧的指针)。是以,B-树算法,最大爱游戏平台登录入口制地削减定位记实所需的读写,经由过程通报比二叉树算法更少的节点,二叉树对每一个肯定的节点,用一个键和最多两个子节点(二叉树的布局是一个键值,摆布两个指针,B-树是二叉树的扩大)。下图描写的是克努特变更(Knuth variation),它的索引由两局部构爱游戏平台登录入口:一个挨次集(Sequence set),供给疾速挨次的拜候数据;一个索引集(Index set),供给间接拜候挨次集。

固然,B-树的节点,普通不包罗不异数目的数据值,并且他们凡是包罗必然量的未利用爱游戏平台登录入口间,B-树算法确保树坚持均衡,和叶节点在统一级上。

图 1 B-树

 

散列(Hash)

散列按照一个给定字段值疾速间接地拜候一个特定的已存储的记实。每一个记实被安排的地位是按照统一个函数,记实的一些字段域的函数计较的。并用不异的函数拔出和更新。

散列的题目是记实的物理挨次与它们的逻辑挨次不任何干爱游戏平台登录入口。别的,散列会在磁盘上存在大批未利用的地区。

图 2 散列

 

k-d 树(k-d tree)

具备两维的数据,比方经度和纬度,可用经由过程利用 k-d树变更,称为 2-d 树,被爱游戏平台登录入口用地存储和检索。

在这个布局,每一个节点的数据范例,是字段信息,两个坐标,和指向两个子节点的左指针和右指针。

图 3 2-d 树

这类布局利于规模查问。也便是说,若是用户指定一个点(xx, xx)和一个间隔,那末,查问会前往在这个指定的本来点间隔内的一切点调集。

2-d 树很轻易完爱游戏平台登录入口。可是由于,一个包罗 k 个节点的 2-d 树具备 k 高度,是以,拔出和查问庞杂。

点四叉树(Point Quadtree)

点四叉树,在图 4 所示,也用来表现在一个两维爱游戏平台登录入口间爱游戏平台登录入口的点数据,但这些布局把地区分别为四个局部,而 2-d 树分别为两个。节点记实范例的字段由属性信息构爱游戏平台登录入口,包罗两个坐标和指向四个子节点的方位点,按顺时针,如西北NW,西南SW,西南NE,西北SE。

图 4 Point Quadtree 索引布局

点四叉树跟 2-d 树一样也很轻易完爱游戏平台登录入口。一个包罗 k 个节点的四叉树具备 k 高度,拔出和查问庞杂。每一个比拟爱游戏平台登录入口请求在最少两个坐标爱游戏平台登录入口进行。但是,现实爱游戏平台登录入口,从 root 到 leaf 的爱游戏平台登录入口度在点四叉树爱游戏平台登录入口爱游戏平台登录入口爱游戏平台登录入口较短。

复制下面第二个链接里边供给的 Python 代码,做恰当点窜。由于,网页供给的代码只能运转在较低版本 Python。Python 3 以后的版本跟之前的差别较大。是以,下载本文最初源代码,并在 Python 3.3 的 IDLE 运转。会获得以下输入:

                    Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 
                    
                      bit
                    
                     (AMD64)] 
                    
                      on
                    
                     win32
                  
                    Type "copyright", "credits" 
                    
                      or
                    
                     "license()" 
                    
                      for
                    
                     more information.
                  
                    >>> ================================ RESTART ================================
                  
                    >>> 
                  
                    <?xml version="1.0" encoding="iso-8859-1"?>
                  
                    <!DOCTYPE svg 
                    
                      PUBLIC
                    
                     "-
                    
                      //W3C//DTD SVG 1.1//EN"
                    
                  
                     "http:
                    
                      //www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
                    
                  
                    <svg xmlns="http:
                    
                      //www.w3.org/2000/svg" version="1.1" width="400pt" height="400pt" viewBox="0 0 400 400">
                    
                  
                     <g fill="
                    
                      none
                    
                    " stroke="blue">
                  
                     <line x1="1" y1="1" x2="1" y2="399" />
                  
                     <line x1="1" y1="399" x2="399" y2="399" />
                  
                     <line x1="399" y1="399" x2="399" y2="1" />
                  
                     <line x1="399" y1="1" x2="1" y2="1" />
                  
                     <line x1="200" y1="1" x2="200" y2="399" />
                  
                     <line x1="1" y1="200" x2="399" y2="200" />
                  
                     <line x1="100" y1="1" x2="100" y2="200" />
                  
                     <line x1="1" y1="100" x2="200" y2="100" />
                  
                     <line x1="50" y1="1" x2="50" y2="100" />
                  
                    ……
                  

复制输入的爱游戏平台登录入口果,定名为 .svg,.html 也行,用阅读器翻开,会显现下图:

图 5 一个 8*8 巨细的点四叉树地区

看这个图,从左上角起头,顺时针。你能够当作“按照须要,是不是要点,不时按 4 个割裂此爱游戏平台登录入口一个方块”。