zoukankan      html  css  js  c++  java
  • MySQL InnoDB表--BTree基本数据结构

        MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据。

        我最开始是搞Oracle的,头一次接触MySQL的时候,默认引擎还是MyISAM。当时我看到公司建立的所有的InnoDB表都会在第一列加一个业务无关的自增主键,我觉得很没有必要,问了些人这么做的意义,得到的答案也是让人搞不懂,其实也都没有说到根本上,只是说这样据说效率会更好。于是我在数据仓库项目的建设时普遍没有采用这种形式,大部分的表都是不指定主键的。

        其实现在想来,最开始设计那些表的人确实是对MySQL InnoDB有研究过的,建表很讲究。那么BTree是什么样子的?

        

        我画了一个图,但是这个图有点问题,叶子节点应该是双向链表,我只画成了单向链表。这样也可以看出来,所有的值都是存放在叶子节点中的,至于每一个页能放多少数据,我没有考据过,如果大家知道不妨告诉我。每每看到这个图我都想起了我大学时代的热血岁月,每天画二叉树算遍历的成本,那会儿真是少年不知愁滋味啊。这里的蓝色方块指的是指针,我没有区分指向子页的指针和指向下一个叶子页的指针。

        基本的数据结构就已经说明白了,下回有时间了更新一下插入数据和删除数据时,如何操作。

        -------

        这里说明一下,这个主要讲的是主键索引,InnoDB表按照主键进行组织,我上面的图其实只是其中一部分,《高性能MySQL》里有一个图画的不错,图5-7,这里整张表就在索引的数据结构上。根据书中描述,聚簇索引“就是”表。

  • 相关阅读:
    Hyper-v: Snapshot merge
    解决Visual Studio 2010 “无法导入以下密钥文件” 错误
    Wix使用整理(二)
    Wix使用整理(一)
    C# 打开指定目录并定位到文件
    常用dos命令
    使用IE9、FireFox与Chrome浏览WPF Browser Application(.XBAP)的方式
    .NET Versioning and Multi-Targeting
    WPF-命令
    在WPF中显示动态GIF
  • 原文地址:https://www.cnblogs.com/wingsless/p/5041043.html
Copyright © 2011-2022 走看看