哪个更快/更好的缓存,文件系统或Memcached?

时间:2010-06-30 09:44:16

标签: performance caching filesystems memcached

我觉得我还不清楚,从文件或memcached中读取内容会更快吗?为什么呢?

8 个答案:

答案 0 :(得分:29)

Memcached更快,但内存有限。硬盘很大,但I / O比内存慢。你应该把最热门的东西放到memcached 所有其他可以来缓存文件
(或者把人投入并投入更多的钱,比如these guys:)

对于某些基准测试,请参阅:Cache Performance Comparison (File, Memcached, Query Cache, APC)

理论上:

Read 1 MB sequentially from memory       250,000 ns
Disk seek                             10,000,000 ns

http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf

答案 1 :(得分:14)

有很多不同的方面可能有利于其中一个:

  • 您是否需要/想要在多台服务器之间共享此数据?文件系统是本地的,memcached是通过网络访问的。
  • 您的缓存项目有多大?对于大型对象,文件系统可能更好。
  • 每页有多少个memcached请求? TCP连接和拆除可能比本地计算机上的简单文件系统stat()占用更多时间。

我建议你看看你的用例并对这两种方法进行一些分析。如果您可以使用文件系统,那么我会。添加memcached会增加另一层复杂性和潜在的故障点(memcached客户端/服务器)。

值得一提的是,关于磁盘与内存性能的其他评论很可能是学术性的,就好像文件系统数据被定期访问一样,然后无论如何它都可能位于操作系统或磁盘缓存中。

答案 2 :(得分:5)

"更快"没有上下文就不能使用。 例如,访问远程服务器上的memcached中的数据可能会更慢"由于网络延迟。另一方面,通过10Gb网络从远程服务器存储器读取数据可以更快"而不是从本地磁盘读取相同的数据。

文件系统缓存和使用memcached的主要区别在于memcached是一个完整的缓存解决方案。因此有LRU列表,到期概念(数据新鲜度),一些高级操作,如cas / inc / dec / append / prepend / replace。

Memcached易于部署和监控(我们如何区分"缓存"文件系统上的工作负载,让我们说内核?我们可以计算缓存数据的总量吗?数据分发?容量规划?等等。)

还有一些混合系统,例如cachelot 基本上,它的memcached可以直接嵌入到应用程序中,因此可以在没有任何系统调用或网络IO的情况下访问缓存。

答案 3 :(得分:1)

你对这些细节感到非常沮丧。而且我相信你寻找的答案取决于情绪。据我所知,很少有东西比其他东西更好。

显然,阅读文件系统的东西并不会更快(假设它是一个硬盘)。即使是SDD也会明显慢于内存中的读取速度。原因是HDD / FileSystem是为了容量而不是速度而构建的,而DDR内存因此特别快。

良好的缓存意味着将频繁访问的部分保留在内存中,并将不常访问的内容保存在磁盘上(持久存储)。这样,通过缓存实现可以大大改善正常情况。那是你的目标。确保您对理想的缓存策略有充分的了解。这将需要广泛的基准测试和测试。

答案 4 :(得分:1)

事实上,从内存中读取比从HDD读取要快得多并不简单。正如您所知,Memcached基于tcp连接,如果您每次想要获取连接或将其设置为memcached服务器(大多数程序员都这样做)时,它就会比使用文件缓存执行得差。您应该使用静态Memcached对象,并重用该对象。其次,现代操作系统将缓存经常使用的文件,这使得文件缓存可能比实际TCP连接的内存缓存更快。

答案 5 :(得分:0)

这取决于缓存是否存储在本地。 Memcache可以通过网络存储数据,这不一定比本地磁盘快。

答案 6 :(得分:0)

缓存类型|缓存每秒获取次数
阵列缓存| 365000
APC缓存| 98000
文件缓存| 27000 Memcached缓存(TCP / IP)| 12200
MySQL查询缓存(TCP / IP)| 9900
MySQL查询缓存(Unix套接字) 13500
从表中选择(TCP / IP)| 5100
从表中选择(Unix套接字) 7400

资料来源:
https://surniaulula.com/os/unix/memcached-vs-disk-cache/

我的来源:)
https://www.percona.com/blog/2006/08/09/cache-performance-comparison/

答案 7 :(得分:0)

如果该文件存储在磁盘中,并且经常被访问,那么很有可能在 RAM 中找到它(作为最近访问的文件),或者我在这里遗漏了什么? 是的,第一次读取将来自非常缓慢的磁盘,但是随后的读取呢(假设该文件很热并且读取了大量内容)这应该比 memcached 更快,因为这是纯 RAM 读取

相关问题