Mysql索引数据结构

Mysql索引数据结构

       Hash表与B+树

       树的查询效率高O(log N),可以保持基本有序。

B-树(B树)实现细节

       磁盘IO消耗时间比较长,数据库索引存储在磁盘上,数据量极大的时候,索引所占的存储空间也是非常可观的。

       索引查询时,将不可能将所有的索引全部加载到内存中,只有逐一加载每一个索引页(即对应B树中的节点)。



索引查找时,最坏条件下的IO次数即为索引树的高度。

为了减少磁盘IO的次数,需要把高瘦的树结构变得矮胖。这就是B-树的特征之一。

B树是一种多路平衡查找树,他的每一个节点最多包含K个孩子,K即位B树的阶。K的大小取决于磁盘页的大小。


B-树的特征:(m阶)

1.   根节点至少有两个子女。

2.   每个中间节点都包含k-1个元素和k个孩子。其中m/2 <= k <= m

3.    每一个叶子节点都包含k-1个元素,其中m/2 <= k <= m

4.    所有的叶子节点都位于同一层。

5.    每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划


B+树

       B+树是B树的一种变体,有着比B树更高的查询性能。


M阶的B树有以下特征:

[if !supportLists]1.    [endif]有K个子树的中间节点含有K个元素(B树中是K-1个),每个元素不包含数据,只用来索引,所有的数据都包含在叶子节点中。

[if !supportLists]2.    [endif]所有的叶子节点包含了全部元素的信息,及指向包含这些元素记录的指针。且叶子节点本身依照关键字的大小自小而大,顺序排列。

[if !supportLists]3.    [endif]所有的中间节点元素都同时存在与子节点,在子节点中是最大(或最小的元素)。


根节点中的最大元素,代表整个树中的最大元素。

卫星数据:索引元素所指向的数据记录。在数据库中的某一行,在B树中,无论是中间节点还是叶子节点,都带有卫星数据。

需要补充的是,在数据库的聚集索引(Clustered

Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。


在B+树中,中间节点不含有卫星数据,同样大小的磁盘页,可以包含更多的节点指针。IO次数更少。

B+树的查询必须查到叶子节点,而B-树只需要查到所查元素即可。

B-树的查找性能不稳定,B+树的每一次查找性能都是稳定的。

B-树的范围查找采用中序遍历,性能不好。B+树先找到边界,然后进行链表操作,性能高。

B-树与B+树的插入删除操作大体一致。


B+树的特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

B+树的优势:

1.单一节点存储更多的元素,使得查询的IO次数更少。

2.所有查询都要查找到叶子节点,查询性能稳定。

3.所有叶子节点形成有序链表,便于范围查询。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容