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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值