我有一个存储许多帖子的数据库,比如博客。问题是存在许多用户并且该用户同时创建了许多帖子。因此,当用户请求主页时,我向db请求此帖子。换句话说,我要获得我展示的帖子,以展示新的帖子。 如何避免此性能问题?
答案 0 :(得分:0)
答案 1 :(得分:0)
标准解决方案是使用类似memcached的东西将常见读取卸载到缓存层。因此,您可能决定每5分钟仅刷新一次主页,而不是使用相同的查询重复访问数据库。
答案 2 :(得分:0)
如果有经常请求的数据,您应该缓存它。尝试使用内存缓存(例如memcached)来存储可能在短时间内重新请求的内容。你应该有免费的RAM:尝试在你的前端机器上使用空闲内存,通常提供HTTP请求和应用模板的RAM密集程度较低。顺便说一句,您不仅可以缓存原始数据库记录,还可以缓存具有格式化和所有页面的现成页面。
如果一台机器无法合理处理您的负载,请尝试sharding your database。将一些用户的数据(帖子,评论等)放在一台机器上,将其他用户的数据放到另一台机器上等。这会使数据库级别的某些连接成为不可能,因为数据在不同的机器上,但是你加入了通常会并行化。
另外,看看面向文档的'NoSQL'数据存储,如(MongoDB)[http://www.mongodb.org/]。它例如允许您在一个记录中存储帖子和所有注释,并在一个操作中获取,无需任何连接。但是常规连接几乎是不可能的。可能混合使用SQL和NoSQL存储是最有效的(并且难以处理)。
答案 3 :(得分:0)
在下载缓存路径之前,请确保
然后......