MySQL InnoDB表--BTree基本数据结构
来源:互联网 发布:指南针软件 不断打电话 编辑:程序博客网 时间:2024/06/05 22:42
MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据。
我最开始是搞Oracle的,头一次接触MySQL的时候,默认引擎还是MyISAM。当时我看到公司建立的所有的InnoDB表都会在第一列加一个业务无关的自增主键,我觉得很没有必要,问了些人这么做的意义,得到的答案也是让人搞不懂,其实也都没有说到根本上,只是说这样据说效率会更好。于是我在数据仓库项目的建设时普遍没有采用这种形式,大部分的表都是不指定主键的。
其实现在想来,最开始设计那些表的人确实是对MySQL InnoDB有研究过的,建表很讲究。那么BTree是什么样子的?
我画了一个图,但是这个图有点问题,叶子节点应该是双向链表,我只画成了单向链表。这样也可以看出来,所有的值都是存放在叶子节点中的,至于每一个页能放多少数据,我没有考据过,如果大家知道不妨告诉我。每每看到这个图我都想起了我大学时代的热血岁月,每天画二叉树算遍历的成本,那会儿真是少年不知愁滋味啊。这里的蓝色方块指的是指针,我没有区分指向子页的指针和指向下一个叶子页的指针。
基本的数据结构就已经说明白了,下回有时间了更新一下插入数据和删除数据时,如何操作。
------------------------------
这里说明一下,这个主要讲的是主键索引,InnoDB表按照主键进行组织,我上面的图其实只是其中一部分,《高性能MySQL》里有一个图画的不错,图5-7,这里整张表就在索引的数据结构上。根据书中描述,聚簇索引“就是”表。
- MySQL InnoDB表--BTree基本数据结构
- mysql InnoDB btree
- 从btree的角度来说说为什么插入频繁的mysql innodb表必须要自增id 必须自增id
- mysql优化(基本类型表MyISAM和InnoDB)
- mysql优化-innodb表
- mysql innodb 表数据压缩
- mysql innodb表压缩
- MySQL InnoDB表恢复
- MySQL-InnoDB表
- btree-mysql索引
- MySQL索引背后的数据结构及BTree B+Tree算法原理
- MySQL 表修复 MyISAM & InnoDB
- mysql innoDB 表的配置
- 常见 mysql innodb 表错误
- mysql innodb的表空间
- MySQL的Innodb表恢复
- mysql innodb分表实战
- MYSQL 5.7 INNODB 表空间
- C语言预处理及特殊函数介绍(extern/exit/atexit/volatile/static/calloc/realloc等)PART TWO
- hdoj GTW likes gt 5596 (DP机智转换)好题
- hdu 5596 GTW likes gt
- 使用IMP导出数据备份并简单FTP实现异地存储
- 多进程 VS 多线程
- MySQL InnoDB表--BTree基本数据结构
- Hough 变换检测直线、圆
- PHP closure 匿名函数
- PHP给第三方接口POST或GET方式传输数据并得到返回值
- 在往web工程中导入lib的时候,应该加入到WEB-INF下的lib包中
- Python——模块(2)
- C++11 标准新特性: 右值引用与转移语义
- 分析函数_PERCENT_RANK -- SQL Server 2012 & Hive
- java_50笔记