首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Memcached与SQL Server缓存

Memcached与SQL Server缓存
EN

Stack Overflow用户
提问于 2010-06-21 20:53:53
回答 3查看 14.4K关注 0票数 22

我已经阅读了很多文章,这些文章建议将Memcached (或Velocity等)放在数据库前面比直接访问数据库更有效。它将通过在内存缓存中查找数据来减少对数据库的命中次数,这比命中数据库的速度更快。

但是,SQL Server为数据库中的对象提供了自己的内存缓存。检索数据时,SQL Server将保留其缓存,并将(如有必要)将行从其内存中拉出,而不会命中磁盘。

如果SQL Server有自己的缓存,那么外部Memcached (或类似的)服务器有什么好处呢?

我读过的大多数文章都是关于社交网站的,这些网站大多使用MySql。但是,使用SQL Server的关于MySpace的article建议在该系统上也使用缓存。

这个article解释了什么时候应该使用缓存,而这个article是一个对立面。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-22 17:36:46

因此,如果SQL server有自己的缓存,那么外部Memcached (或类似的)服务器有什么好处?

是的,SQL Server有自己的缓存,但他只缓存:

  • Query plans
  • pages from the database files

但他不缓存:

  • results from a query

例如,你有一个复杂的查询,它使用了对大量数据的聚合(想想:我们的客户数据库中有多少不同的国家:按国家从客户组中选择不同的国家)

SQL Server将扫描整个customer表,但您的结果集只有几个条目。当您重新发出查询时,SQL Server将重用查询计划并重新扫描customer表(如果幸运的话,页面仍在内存中)

当您使用memcached时,您可以存储结果集的几行,并在不连接到数据库服务器的情况下反复重用它们。因此,它会从数据库服务器中承担一些负载。

注意:如果您的数据在SQL服务器上发生更改,请注意一些过时的数据!!

票数 17
EN

Stack Overflow用户

发布于 2010-06-23 20:08:51

另一个好处是,SQL Server的扩展成本较高,而添加新的web/缓存服务器的成本较低。

我们在应用程序级别使用缓存来存储所有类型的数据,也不是所有的数据都来自数据库。例如,您可以在代码中操作数据对象,然后添加到缓存中。

如果需要,您甚至可以存储标记(输出缓存)。

在一天内,通过使用缓存,我们将我们的网站从能够处理150个并发会话,而压力测试提高到800多个。我强烈推荐使用它!

票数 5
EN

Stack Overflow用户

发布于 2010-06-21 20:56:12

Velocity等非常棒,特别是当您的SQL服务器独立运行时。我们一直在使用ASP.NET的内置缓存,但希望迁移到Velocity。多个web服务器与SQL集群通信,缓存确实有助于提高可伸缩性并减少SQL负载。

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

https://stackoverflow.com/questions/3084789

复制
相关文章

相似问题

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