1. 掌握页的概念 2. 认识B(B+)树 3. 掌握索引 4. 了解Buffer Pool缓冲池 5. 了解查询一条数据的过程 知识要点 Page--页 定义 磁盘和内存之间交互的基本单位。一个页的大小一般是16KB。页分为很多种,存放表空间头部信息的页、存放undo log信息的页等等,我们把存放表中数据记录的页称为索引页或数据页。
1、InnoDB 存储引擎的最小存储单元是页,页可以用于存放数据也可以用于存放键值 + 指针,在 B+ 树中叶子节点存放数据,非叶子节点存放键值 + 指针。 2、索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而在去数据页中查找到需要的数据; 三、那么回到我们开始的问题,通常一棵 B+ 树可以存放多...
InnoDB 和之前的 MyISAM 比,最大的变化就是将磁盘上面数据的基本存储结构从索引+数据这样的分体式,变成了所有数据都挂在索引上的整体式:从“B+ 树索引”加“磁盘连续存储数据”(中间用指针链接)变成了“B+ 树存储全部索引和数据”。 这个操作给 MySQL 带来了翻天覆地的变化。那么,InnoDB 到底做了哪些取舍呢?
2、 页(page):默认每个页的大小为 16KB,也就是最多能保证 16KB 的连续存储空间。 3、 区(extent):区是页的集合,一个区包含64个连续的页。 4、 段(segment):表空间是由各个段(segment)组成的,段是由多个区(extent)组成的。段一般分为数据段、索引段和回滚段等。 索引段:存放 B + 树的非叶子节点的...
再次强调,InnoDB存储引擎表总是B+树索引组织的 Freee Space 指的是页的空闲空间,同样也是个链表数据结构 在一条记录被删除后,删除的空间会被加入到空闲链表中 五、Page Directory Page Directory(页目录)中存放了记录的相对位置(注意,这里存放的是页相对位置,而不是偏移量)。有些时候这些记录指针称为Slots(槽)或...
所以在InnoDB中B+树高度一般为1-3层,它就能满足千万级的数据存储。 在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次IO操作即可查找到数据。 怎么得到InnoDB主键索引B+树的高度? 上面我们通过推断得出B+树的高度通常是1-3,下面我们从另外一个侧面证明这个结论。
其实这就是 B+ 树。 现在无论是存放用户记录的数据页,还是存放目录项记录的数据页,都存放到 B+ 树这种数据结构中。 所有的数据页都成为 B+ 树的节点。 真正存用户记录的数据页都在 B+树最底层的节点上,称为叶子节点或者叶节点。 而存放目录项记录的节点称为非叶子节点或者内节点。
一般来说B+树是由多个页组成的多级层级结构,每个页16Kb,对于主键索引来说,叶子节点存放用户完整行数据,非叶子节点存放索引信息(索引列和页号)。每个数据页内部,通过页目录实现二分查找 B+ tree也是利用了空间换时间的方式,同时利用索引层可以存放大量索引这一特点,使得B+ tree整体看上去更矮更胖,即定位记录需要的...
MySQL InnoDB的数据由B+树来组织,数据记录存储在B+树数据页(page)中,每个数据页16kb,数据页 包括页头、虚记录、记录堆、自由空间链表、未分配空间、slot区、页尾七部分组成。 所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键码。
InnoDB存储引擎的最小存储单元是页,页可以用于存放数据也可以用于存放键值+指针,在B+树中叶子节点存放数据,非叶子节点存放键值+指针。 索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而在去数据页中查找到需要的数据; 那么回到我们开始的问题,...