Memcached vs SQL Server缓存

Mik*_*ien 21 sql-server performance memcached caching

我一直在阅读很多文章,建议将Memcached(或Velocity等)放在数据库前面比直接点击数据库更有效.它将通过查找内存缓存中的数据来减少数据库上的命中数,这比访问数据库要快.

但是,SQL Server为数据库中的对象提供了自己的内存缓存.检索数据时,SQL Server会维护其缓存并将(如果需要)从其内存中提取行而不会访问磁盘.

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

我读过的大多数文章都是社交网站,大多数都使用MySql.但是,一篇关于使用SQL Server的MySpace 的文章表明,该系统也使用了缓存.

文章解释时,应使用缓存,这文章是对位.

Kla*_*aus 17

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

是SQL Server有自己的缓存,但他只缓存:
- 查询计划
- 数据库文件中的页面

但他没有缓存:
- 来自查询的结果

例如,您有一个复杂的查询,它对大量数据使用了一些聚合(想想:我们在客户数据库中有多少个不同的国家:来自客户GROUP BY国家/地区的SELECT DISTINCT国家/地区)

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

当您使用memcached时,您可以存储结果集的几行,并在不连接到数据库服务器的情况下反复重复使用它们.因此需要从数据库服务器获得一些负载.
注意:如果您的数据在SQL服务器上发生变化,请注意一些陈旧的数据!

  • 当您已经按同一列进行分组时,您不必在列上使用 DISTINCT。 (2认同)

Art*_*old 5

另一个好处也可能是 SQL Server 的扩展成本很高,而添加新的 Web/缓存服务器的成本可能更低。

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

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

在一天之内,通过使用缓存,我们将站点从能够处理 150 个并发会话同时进行压力测试提升到了 800 个以上。我强烈建议使用它!