<转>堆组织表(hot)和索引组织表(iot)

来源:互联网 发布:淘宝隐藏导航栏代码 编辑:程序博客网 时间:2024/05/21 06:41

myisam使用的堆组织表(Heap Organize Table, HOT)使用B-tree索引的存储格式,显示都是随机顺序。
innodb表是索引组织表(Index Organized Table, IOT),它的索引则是采用 clustered index 方式,因此主键会按照顺序存储,每次有记录有更新时,会重新整理更新其主键。因此无论是直接从 myisam 表转换过来的,还是后来插入的记录,显示时都会按照主键的顺序。

mysql> select * from duplicate_key;+----+------+| id | p_id |+----+------+| 2 | 2 || 3 | 3 || 5 | 5 || 4 | 4 || 6 | 6 || 7 | 7 |+----+------+
  • 6 rows in set (0.00 sec)
    此时的duplicate_key表是myisam引擎的,
    update duplicate_key set id=id-1的时候会提示Duplicate entry ‘4’ for key ‘PRIMARY’错误。
    update duplicate_key set id=id-1 order by id;如果这样做,就不会出错,原理上面已做出了说明。
    如果是innodb引擎就不会出现这样的情况,因为他的聚集索引存储方式会按顺序来显示。

  • 3:在myisam引擎使用的时候如果你delete了其中的几条数据,这时的表就是一个hole表。
    如果你不使用表维护命令进行维护,你新插入的数据就会放到你刚刚删除的那个位置。如果不够清楚,乐于详细解答。

    http://blog.chinaunix.net/uid-24111901-id-2627878.html

原创粉丝点击