我想转换我的统计信息跟踪系统,而不是直接写入数据库,因为我们遇到了瓶颈。

我们目前在网站的某些方面使用memcached,我想用它来存储统计数据并将它们定期提交到mysql DB。

但是,问题在于项目的数量(以百万计),可能在cronjob运行之间收集到统计信息,以将其提交到数据库中。除了运行SELECT * FROM data并检查每个内存缓存键是否存在,然后更新表...之外,还有其他方法吗?

最佳答案

(我并不是说下面是福音,这只是我的直觉。正如稍后所说,我没有您系统的详细信息:)而且显然没有冒犯的意思,等等:))

我建议不要为此使用memcached。 Memcached可以快速检索您之前获得的值,而不是存储值。最大的区别是缓存已满,您将丢失数据。

通常,缓存中没有数据,然后从源中重新收集数据,这种情况下是不可能的。仅此一个原因,我就会尝试劝阻您。

现在,您说的主要问题是所达到的mysql连接限制。如果您做简单的事情(例如我们在评论中谈论的内容:insert delayed),那只是增加限制的一种情况。您可能应该有足够的能力让您的脚本/用户进入数据库一次,然后说“应该最终添加”,然后消失。如果您的用户甚至无法为此打开1个连接,那么可能存在严重的资源问题,您可能无法通过添加额外的缓存层来解决?

显然,在没有系统,软件和硬件规范的情况下很难说,但是我的建议是看看是否可以通过增加限制来让他们打开连接,并稍微摆弄服务器变量,而不是猴子打补丁。通过使用memcached作为中间层来创建您的系统。

10-03 01:06
查看更多