innodb聚集索引的主键是用链表链接起来的,还是物理存储真的就是挨在一起的?
换句话说就是b树的非叶子节点和节点是否是混在一起存储?

解决方案 »

  1.   

    是的。INNODB聚簇索引的索引和数据是存储在一起的。
      

  2.   

    聚镞索引中的每个叶子节点都包含主键值,事务ID,用于事务和MVCC的回滚指针以及剩下的列,如果主键被创建在列的前缀上,INNODB也会包含整个列及剩下的所有列。比如一个表A(IID INT,SNAME VARCHAR(30)),IID上建立主键索引,那么在每个存储的叶子节点上包含的是(1,TID,RP,'张三'),(1,TID,RP,'李四'),这样的。1,2是索引。
      

  3.   

    谢谢左左回复。目前我的问题在于,假如聚簇索引 b树的叶子节点和非叶子节点是否混在一起存储,假如混在一起存储的话,那聚簇索引叶子节点没有挨在一起,那不也是随机读写了。
    比较而说,myisam的数据文件是紧挨在一起的
      

  4.   

    innodb聚集索引只聚集在同一页面中的记录,包含相邻键值的页面也许会相距甚远!
      

  5.   

    通过数据dump来看,当随机插入数据以后,物理中存放的顺序还是插入的逻辑顺序,除非通过alter table optimize table等方法重建索引才能使物理顺序真正按主键的顺序存放,谁能解答一下这是为什么?
      

  6.   

    通过数据dump来看,是什么意思?