假设我有三个规范化表,一个用于线程,一个用于注释,一个用于连接两者。
我想显示线程中的评论数量,这涉及到查找属于某个线程的每条评论。
显然,我不想每次显示页面时都执行此查询,因此我需要将评论数缓存到一个线程。我的两个选择(如我所见)是:
在线程表中添加 number_comments 行,并在添加/删除评论时更新它。
将值缓存在内存中,方法是告诉 mysql 缓存它或使用 APC / memchached 之类的东西
每个的优点/缺点是什么?
我认为第一个很简单,性能稍差,但是您有冗余,并且存储比内存便宜很多,尽管它确实用“动态”、不断变化的值弄乱了数据库(另请注意,我会需要为评论保存“upvotes”,所以这个问题适用于多个“动态”值)。
第二个是更好的性能,但它引入了一项新技术,你必须配合它来缓存事物的数量。
这个项目的用户数量相对较少,但我想知道哪个比访问量大的网站更可取(例如,facebook 如何存储评论数量[我猜是数据库和内存中的])。