MySQL-mysql Memory Storage Engine 和memcache到底有何不同?各自的优缺点是什么?

MySQL-mysql Memory Storage Engine 和memcache到底有何不同?各自的优缺点是什么?

浮生未歇 发布于 2017-11-05 字数 0 浏览 1425 回复 3

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

虐人心 2017-11-10 3 楼

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查询

归属感 2017-11-09 2 楼

如果性能瓶颈是数据库查询引起的,当然需要增加memcached对象缓存了;
如果性能瓶颈在于高并发的频繁对某个小表的插入和更新操作造成的表锁定的话,可以考虑使用内存表解决。
Mysql memory storage engine的优缺点参考
mysql 什么样情况使用临时表,内存表来加快速度?
这篇文章

瑾兮 2017-11-08 1 楼

1.速度方面:memcached要比mysql内存表快 包括读取和写入
2.内存表支持标准的SQL
3.Memcached支持记录超时设置
4.Memcached支持大规模集群,当然内存表也可以,只不过需要自己去HASH
5.Memcached只支持key查询
6.二个都不支持持久化,重启后数据丢失

我觉得内存表跟memcached相比最大的优点就是支持标准SQL操作了,这点memcached没法比。