gpt4 book ai didi

mysql - 在社交网络设计中使用外键——好/坏?

转载 作者:行者123 更新时间:2023-11-29 03:13:21 27 4
gpt4 key购买 nike

在我的模式中,我已经规范化了我的数据库并且到处都有 FK,因为社交网络中有如此多的链接关系,尤其是将用户链接到所有内容。

现在很明显,在社交网络中,性能会成败。这意味着“读取”时间比“写入”时间更重要。我的数据库是所有表都使用 InnoDB 的 MySQL。所以问题是:
1) 我假设我的阅读比写作更好的假设是社交网络所需要的?
2) 有许多 FK(我估计每个表中几乎 30% 的列都有 FK),这会影响读取性能或写入性能或两者兼而有之,还是不会?
3) 最好为每个表设置 2 组表 - 一组用于选择(读取),一组用于具有不同模式的插入(写入),以便可以相应地设计它们以获得更好的性能?
4) 如果我将 80% 的列设为 fks 有什么危害吗? (请记住,这是一个社交网络,以后可能会有很多流量,也可能不会)

最佳答案

1) I assume my assumption of better Read than write is what social netorks need?

通常,阅读内容的次数多于撰写内容的次数。但听起来您正在进行大量过早的优化。

2) having many FKs (i would estimate almost 30% of the columns in each table have FKs), would this effect Read performance or write performance or both or none?

声明外键与性能关系不大。

要么您的数据库已规范化,要么未规范化。在您知道遇到性能问题之前,不要试图打破规范化。

3) It is better to have 2 sets of tables for each table - one for Selects (Reads) and one for inserts (writes) with different schema so they can be designed accordingly for better performance?

您是在谈论实现 materialized views这里?听起来像是过早的优化 - 如果您认为它可能会使用 View 来访问当前的数据,那么请等到您知道您遇到了性能问题,然后再用物化 View 替换底层实体。

4) Any harm if i make say 80% of my colunms as fks? (keep in mind this is a social network which may or may not have lots of traffic later)

否 - 与上面的答案相同 - 规范化您的数据。声明您的 FK,等到出现性能问题后再尝试修复它。

关于mysql - 在社交网络设计中使用外键——好/坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com