38InnoDB和Memory

InnoDB引擎把数据放在主键索引上,其他索引上保存的是主键id。称之为索引组织表(Index Organizied Table)。
Memory引擎采用的是把数据单独存放,索引上保存数据位置的数据组织形式,称之为堆组织表(Heap Organizied Table)

  1. InnoDB表的数据有序存放,内存表的数据就是按照写入顺序存放;
  2. 数据文件空洞,InnoDB表保证数据有序性,在固定的位置写入新值,内存表找到空位就可以插入新值;
  3. 数据位置发生变化,InnoDB表只需要修改主键索引,而内存表需要修改所有索引;
  4. InnoDB 表用主键索引查询时需要走一次索引查找,用普通索引查询的时候,需要走两次索引查找。而内存表没有这个区别,所有索引的“地位”都是相同的。
  5. InnoDB支持变长数据类型;内存表不支持Blob和Text字段,固定长度字符串来存储,内存表的每行数据长度相同。
  6. Memory不可持久化,重启丢失
  7. Memory不支持行锁,事务操作性能低

Memory引擎用途:临时表
数据量可控(不会耗费过多内存)时可考虑内存表

MyISAM

不支持事务,表锁不支持行锁,设计简单,适合读密集型的场景