38InnoDB和Memory
InnoDB引擎把数据放在主键索引上,其他索引上保存的是主键id。称之为索引组织表(Index Organizied Table)。
Memory引擎采用的是把数据单独存放,索引上保存数据位置的数据组织形式,称之为堆组织表(Heap Organizied Table)
- InnoDB表的数据有序存放,内存表的数据就是按照写入顺序存放;
- 数据文件空洞,InnoDB表保证数据有序性,在固定的位置写入新值,内存表找到空位就可以插入新值;
- 数据位置发生变化,InnoDB表只需要修改主键索引,而内存表需要修改所有索引;
- InnoDB 表用主键索引查询时需要走一次索引查找,用普通索引查询的时候,需要走两次索引查找。而内存表没有这个区别,所有索引的“地位”都是相同的。
- InnoDB支持变长数据类型;内存表不支持Blob和Text字段,固定长度字符串来存储,内存表的每行数据长度相同。
- Memory不可持久化,重启丢失
- Memory不支持行锁,事务操作性能低
Memory引擎用途:临时表
数据量可控(不会耗费过多内存)时可考虑内存表
MyISAM
不支持事务,表锁不支持行锁,设计简单,适合读密集型的场景