代码之家  ›  专栏  ›  技术社区  ›  Brent

更快的是:内存中的memcached或mysql,比如heap?

  •  9
  • Brent  · 技术社区  · 15 年前

    如果我有一组非常静态的数据,我希望能够尽快访问这些数据。我应该将数据缓存到memcached中,还是应该将其存储在heap表或mysql中?一个比另一个更好吗?

    还有其他更快的选择吗?

    3 回复  |  直到 15 年前
        1
  •  20
  •   Frank Farmer    15 年前

    Memcached对于简单的使用来说会更快、更省力——Memcached上的连接设置要便宜得多,因为它没有身份验证、缓冲区分配等功能。此外,Memcached还设计为在多个服务器之间轻松地分配密钥。

    但是,memcached只是一个简单的键/值存储。如果您需要对数据执行更复杂的操作(甚至是像select*where x>5这样的操作),堆表的功能就更强大了。

    不过,罗伯特·蒙蒂努提出了一个很好的观点。缓存层次结构应为:

    1. 全局(请求/进程的本地)
    2. APC(服务器本地)
    3. Memcache(全局)

    如果您不需要将全局更改传播到此数据,那么将其存储在APC中是有意义的。如果在脚本执行期间需要多次访问它,那么还应该将其缓存在脚本的全局中。

        2
  •  2
  •   John Millikin    15 年前

    最快的选择是在本地系统上进行内存缓存。这不会很好地扩展到数百万的关系,但是 非常 速度快,适用于小型数据集。

    我没有在memcached/mysql堆之间进行性能测试,但我想memcached会更快,因为它没有完整的关系数据库引擎的开销。memcached几乎可以更好地扩展,因为您可以在服务器之间分发它,并在服务器之间进行循环请求分派。

    如果在检索数据之前需要对其进行任何过滤,那么应该使用MySQL。传输不需要的数据的性能开销可能会超过更快查找的好处。

    如果我是你,我会将有问题的数据集加载到MySQL中。 memcached,然后运行性能测试以查看哪个对数据集更好。如果有一个特别经常访问的核心数据,那么考虑一个额外的机器本地缓存。

        3
  •  1
  •   Robert Munteanu    15 年前

    如果数量不多,就把它存储在你自己的过程中。那是最快的。