为什么要有区?
复习
同层结点之间是通过链表的方式连在一起的,如果进行范围查询,先找到最左边的边界,再找到最右边的边界,然后根据最左边的边界通过链表遍历去找到最右边的边界,如果最左边的值和最右边的边界在地址上相聚很远的话,此时在查询的时候就会产生所谓的随机IO,为了避免此种情况发生,我们引入了区的概念,一个区是由许多连续的页构成的,一个区含有64个页,一个页的大小为16kb,所以一个区的大小为1M,在数据量很多的时候,我们不是以一个页为单位来加载。而是以一个区为单位进行数据的加载,甚至数据量更多的时候,我们一次性加载连续的多个区,虽然此时可能产生浪费空间,但是这将会大大减少随机IO,攻大于过
为什么要有段?
B+树中的结点分为叶子节点和非叶子节点叶子节点记录数据信息,非叶子接地爱你记录索引信息,如果把它们混着放在同一个区中,那么对于范围查询来说,此不是会大打折扣?所以,innodb存储引擎将它们分开存储,存放叶子节点的区构成的集合就成为数据段,存放非叶子结点构成的区的集合成为索引段,所以每一个索引都有对应的两个段,数据段和索引段,此外还有回滚段等。此外,段是一个逻辑存储,由存储引擎自动管理的,这就降低了DBA的管理