mysql INNODB 与MEM的区别

InnoDB: IOT 

MEM:    HOT   不支持行锁,数据重启后清空,为防止主从不一致,在数据库重启之后,在binlog写入一行delete from tablename

              建议内存临时表用MEM

  • InnoDB 表的数据总是有序存放的,而内存表的数据就是按照写入顺序存放的;
  • 当数据文件有空洞的时候,InnoDB 表在插入新数据的时候,为了保证数据有序性,只能在固定的位置写入新值,而内存表找到空位就可以插入新值;
  • 数据位置发生变化的时候,InnoDB 表只需要修改主键索引,而内存表需要修改所有索引;
  • InnoDB 表用主键索引查询时需要走一次索引查找,用普通索引查询的时候,需要走两次索引查找。而内存表没有这个区别,所有索引的“地位”都是相同的。
  • InnoDB 支持变长数据类型,不同记录的长度可能不同;内存表不支持 Blob 和 Text 字段,并且即使定义了 varchar(N),实际也当作 char(N),也就是固定长度字符串来存储,因此内存表的每行数据长度相同。
原文地址:https://www.cnblogs.com/tingxin/p/14311194.html