Memory存储引擎将表的数据存放在内存中,默认使用哈希索引,memcache同样是使用哈希的方式将数据存在内存中,不过它们还是有比较大的区别的,我列几条:
1.MEMORY表使用固定的记录长度格式,像VARCHAR这样的可变长度类型将转换为固定长度类型在MEMORY表中存储,同样也不能包含BLOB或TEXT列,memcache存贮的值是可变的;
2.MEMORY支持AUTO_INCREMENT列,memcache不支持key值自增长,需要程序来实现;
3.MEMORY如果删除行,内存表不会回收内存,只有整张表全部删除的时候,才进行内存回收;
4.MEMORY表支持INSERT DELAYED;
优点:
MySQL Memory: 适合对 cache 数据进行Select条件查询。
MemCached: 可以设置 exptime (超时时间),无需自己管理,另外memcached读写速度是 mysql memory table 3倍左右
缺点:
MySQL Memory: 占内容空间大,同样数据量比较
MemCached: 只能进行key-value查询