首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于内存的数据库可以取代缓存吗?

问基于内存的数据库可以取代缓存吗?
EN

Stack Overflow用户
提问于 2011-09-18 04:33:15
回答 3查看 510关注 0票数 5

Mysql有基于内存的数据引擎,这意味着它将数据保存在RAM中。

据我所知,Mysql中有两种类型的内存存储引擎使用内存,

一个是内存引擎本身,这个存储引擎不是很酷的功能是只创建虚拟表,这意味着如果服务器重新启动,数据就会丢失

另一个是集群存储引擎,它没有前一个引擎的缺点,它使用内存,但它也保留了基于文件的数据记录。

现在的问题是,如果您的数据库已经在使用RAM存储和处理数据,您是否需要添加另一个缓存引擎,如Memcached,以提高您的产品的性能?

与Memcached相比,内存引擎数据库有多快?

Memcache是否为您的产品添加了内存引擎数据库所不具备的功能?

与只允许你获取原始数据的Memcached相比,内存引擎数据库为你提供了更多的功能,比如能够请求查询,所以Memcached有点像一个只支持SELECT命令的数据库引擎。

我是不是遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-18 05:56:58

(关系)数据库和缓存服务是互补的。正如所指出的,它们有不同的设计目标和用例。(然而,我发现在这篇文章中没有数据库的核心优势。)

Memcached (和其他缓存)提供了一些在ACID数据库模型下无法实现的好处。这是一种权衡,但这种缓存是为最大分布和最小延迟而设计的。Memcached不是一个数据库:它是一个带有一些驱逐策略的分布式键值存储。因为它只是一个键值存储,所以它可以“跳过”查询数据库数据的许多步骤--代价是只直接支持1-1操作。没有连接,没有关系,只有一个结果,等等。

记住,缓存只是一个缓存。它不是可靠的信息存储,也不提供(关系)数据库中的数据完整性/一致性。即使是能够“持久化”数据的缓存系统也不一定有ACID保证(见鬼,甚至MyISAM也不是完全ACID!)。一些缓存系统提供了更强的同步/一致性保证;memcached不是这样的系统。

底线是,由于memcache的简单设计和模型,它将在延迟和分布上赢得它所操作的领域。多少钱?嗯,那要看情况...

...first,选择具有所需功能和保证的方法,然后对这些方法进行基准测试,以确定哪些方法适合(或“最适合”)该任务。(甚至根本不需要使用缓存或“内存数据库”,或者更好的方法可能是使用"No SQL“设计。)

祝你编码愉快。

票数 1
EN

Stack Overflow用户

发布于 2011-09-18 04:38:26

这取决于您如何使用memcached。如果您使用它来缓存需要30个SQL查询才能构建的呈现的HTML页面,那么即使是在内存中的数据库上,它也会给您带来性能提升。

票数 4
EN

Stack Overflow用户

发布于 2011-09-18 04:46:04

Memcached可以存储高达1mb的数据。它所做的是,它以这样一种方式利用数据库负载,您甚至不需要连接到数据库就可以向它请求数据。大多数网站都有少量的数据显示给用户(就文本数据而言,而不是文件本身)。

所以回答-是的,让Memcached也是一个好主意,因为它可以帮助你,这样你甚至不需要连接到db,这在一开始就消除了一些开销。

另一方面,有太多的引擎可用于MySQL。就我个人而言,我不会使用内存引擎有很多原因--其中之一就是数据丢失。InnoDB,最近发布的默认MySQL引擎-已经将工作数据集存储在内存中(由innodb_buffer_pool变量控制),如果数据集可以放入内存中,它的速度非常快。还有在可伸缩性方面超过InnoDB的TokuDB引擎,两者都比内存引擎更好。但是,缓存那些经常访问且很少更改的数据总是一件好事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7457600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档