我希望开发一个以小桌子为中心的LAMP应用程序,可能少于100行,每行可能有5个字段。这个表需要快速访问存储的数据,每个用户可能每秒一次(尽管这是“理想的”,实际上,这可能会略有下降)。将对该表进行一些更新,但SELECT将远远超过UPDATES。
可用的硬件功能并不强大(它可以在具有512mb RAM的VPS上启动)并且需要可扩展 - 启动时可能只有10个并发用户,但这可能会增加到数千个(和,正如我们都希望这些东西,可能是10,000,但这个级别将有更强大的硬件可用)。
因此我想知道是否有人可以指出我正确的方向为起点 - 所有检索到的数据对所有用户都是相同的,所以我试图调查是否有任何共享此数据所有用户,而不是执行10,000个相同的选择。 SOOOO:
1)mysql_query_cache会缓存这些结果并允许访问数据,而不需要为每个用户重新选择吗? 2)(抱歉这个问题的范围有多广,我甚至非常感谢最简单的反应!)我一直在研究APC缓存,因为我们已经将它用于操作码缓存 - 是否有一种缓存数据的方法在APC缓存中,只需每秒执行一次MYSQL选择来更新此缓存 - 然后只为每个用户访问APC?或者可能是替代缓存?
如果没有这一切,我可能会考虑使用一个单独的脚本来处理查询并输出数据,并且不知何故只是将这个脚本的数据传递给所有用户。这不是一个完全形成的想法,我不确定实现,但也许是AJAX的组合来从......“某处”......输出数据... :)
再一次,为这些问题的广度道歉 - 一些来自任何人的简短指示将非常非常感激。 再次提前致谢
答案 0 :(得分:2)
如果你正在做类似AJAX聊天的事情,它会不断地轮询服务器,你可能需要查看node.js,这样可以保持服务器和浏览器之间的开放连接。这样,您可以在用户发生更改时将更改推送给用户,并且您不需要每秒执行一次冗余检查。这可以很好地扩展到成千上万的用户,并且在服务器端用javascript编写,所以不太难。
答案 1 :(得分:0)
使用MySQL缓存的问题是整个表缓存在对该表的任何写入时都会失效。如果你试图更精确地控制这种行为,你最好使用像memcached或APC这样的缓存解决方案。是的,APC可以缓存这些信息。
要记住的另一件事是你需要知道何时使缓存失效,因此你没有过时的数据。
答案 2 :(得分:0)
您可以使用apc,xcache或memcache进行数据库查询缓存,也可以使用vanish或squid进行网关缓存......