【发布时间】:2014-03-23 02:58:40
【问题描述】:
我正在使用 PHP。我想在 MySQL 上存储临时数据。我还有 64GB Memcached 服务器。所以,我想使用 memcache 服务器来存储临时数据。但是我对 MySQL 和 Memcached 服务器的性能有疑问。
在 MySQL 和 Memcached 之间存储临时数据的最佳、速度和可靠方式是什么?
【问题讨论】:
我正在使用 PHP。我想在 MySQL 上存储临时数据。我还有 64GB Memcached 服务器。所以,我想使用 memcache 服务器来存储临时数据。但是我对 MySQL 和 Memcached 服务器的性能有疑问。
在 MySQL 和 Memcached 之间存储临时数据的最佳、速度和可靠方式是什么?
【问题讨论】:
答案是……视情况而定。 Memcached 非常快,甚至更好的是,您可以将多台机器或分片添加到您的 memcached 池中,或多或少地对您的应用程序不可见。 MySQL 有多种存储引擎(可能还有复制),如果您需要存储数据,它们可以持久保存您的数据。
因此,这取决于您的临时数据需要有多“临时”。一个很好的思考方式是:如果您的服务器重新启动,您是否关心数据是否存在?
如果 memcached 实例重新启动,memcached 分片中的数据将消失,但访问速度通常比 MySQL 表中的数据快得多。 MySQL 中的数据会更持久,但访问速度会更慢。
MySQL 确实有一个内存存储引擎。与大多数其他 MySQL 查找相比,内存存储速度很快,并且如果服务器或服务重新启动,其中的数据将消失。
如果您在它和 Memcached 之间进行选择,通常 Memcached 是更好的选择(尽管它始终取决于您自己的数据 - YMMV)。 MySQL 内存引擎有严格的大小限制,您将需要修剪您的数据或冒着命中它们的风险。使用 Memcached,您可能会达到大小限制,但 Memcached 服务将简单地开始驱逐值而不是抛出错误。驱逐不是很好,但至少它们不会导致您需要处理的错误,您通常可以通过查看指标并为您的内容设置适当的 TTL 来防止它们。
【讨论】: