Memory
- 如果要快速访问数据且这些数据不会被修改,重启以后丢失也没有关系,那么使用memory表是非常有用的。Memory表至少要比myISAM表快一个数量级,因为所有数据都保存在内存,不需要磁盘IO,memory表的结构在重启后会保留,但数据会丢失。
- Memory表适合的场景:查找或者映射表、缓存周期性聚合数据的结果、保存数据分析中产生的中间数据。
- Memory支持哈希索引,因此查找速度极快。虽然速度很快但还是无法取代传统的基于磁盘的表,memory表使用表级锁,因此并发写入的性能较低。它不支持BLOB和TEXT类型的列,并且每行的长度是固定的,所以即使指定了varchar列,实际存储时也会转换成char,这可能导致部分内存的浪费。
- 如果MySQL在执行查询的过程中需要使用临时表来保持中间结果,内部使用的临时表就是memory表。如果中间结果太大超出了memory表的限制,或者含有BLOB或TEXT字段,临时表会转换成myISAM表。
欢迎批评指正,提出问题,谢谢!