码迷,mamicode.com
首页 > 数据库 > 详细

MySQL InnoDB表--BTree基本数据结构

时间:2015-12-12 13:52:49      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

    技术分享

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

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

MySQL InnoDB表--BTree基本数据结构

标签:

原文地址:http://www.cnblogs.com/wingsless/p/5041043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!