InnoDB主键存储数据的方式是以B+树的方式来进行存储的,下图是其数据组织方式如下:


我们可以看到其索引和数据是分开存储的,数据部分是以数组的方式来进行存储的,而主键id是hash索引,每个主键id中记录着对应数据的位置,并且主键id是无序的。当我们select *时,会顺序扫描数据数组,所以0是最后一个。
InnoDB数据组织方式是把数据放在主键索引上,其他索引存储着主键id,这种数据组织方式称为索引组织表。Memory数据组织方式是把数据单独存放,主键上记录着对应数据的位置,这种数据组织方式称为堆组织表。
InnoDB的数据都是有序的,而Memory的数据是以插入顺序来进行存储的
Memory在插入数据时,若表中有空位,就可以插入新值
当数据位置发生变化时,InnoDB只需要修改主键,Memory需要修改整个索引
InnoDB主键索引查询时,需要走一次索引,而普通索引需要走两次索引查找,Memory中的索引查询时只需要走一次
InnoDB支持变长的数据,而Memory支持的数据长度都是固定的
Memory的锁粒度
Memory中的表数据都是存储在内存中的,当数据库发生异常重启时,所有的数据都会丢失,而在搭建主备的情况下,当主库发生异常时,主库发给从库的binlog日志会先删除内存表
文章转载自Lord Lean Notes,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




