首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:在这种情况下复制信息有意义吗?

数据库设计:在这种情况下复制信息有意义吗?
EN

Stack Overflow用户
提问于 2012-10-22 17:03:09
回答 3查看 56关注 0票数 1

我正在建设一种服务,一种社交网络,预计将吸引数万亿用户。这些用户将能够关注其他用户。对于这种情况,让我们假设我正在构建Facebook。哈哈!

在每个用户的名字旁边,将有他拥有的追随者的数量。就像这样

代码语言:javascript
复制
SELECT COUNT(*) FROM users_vs_users 
  WHERE user_followed_id = 'xxx' GROUP BY user_followed;

这样做是可行的,但每次重新加载页面并检查数万亿用户时,都会杀死我的服务器。

users表中为每个用户指定一个名为num_of_followers的字段是否合理,该字段在每次有人被跟踪或未被跟踪时都会更新?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-22 17:07:34

是。实际上,出于性能原因,您正在进行反规范化。

票数 2
EN

Stack Overflow用户

发布于 2012-10-22 17:18:07

我对此有不同的看法

一些数据库可以使用内存(加上磁盘同步),如Oracle times和MySQL集群

仅对频繁访问的数据使用基于内存的数据库通常会提供很高的性能,这只会使管理“计数”字段的历史记录变得麻烦

另一个大技巧是,除非迫不得已,否则永远不要优化,尝试预测未来几个月的预期流量,而不是几年,然后您可以监控哪些查询实际上正在扼杀性能或进行过多的磁盘访问,然后您将能够根据实际信息而不是猜测来反规范化表

票数 2
EN

Stack Overflow用户

发布于 2012-10-22 17:08:07

在我看来,任何有自尊的DBMS都应该在内部自行执行这样的优化。或者他们已经这么做了?COUNT(*)真的很慢吗?我不知道。

不管怎么说,有何不可呢?只需确保"users_vs_users“和"users.num_of_followers”在任何时候都是同步的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13008005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档