【问题标题】:Does the amount of MySql users affect MySql performance much?MySql 用户数量对 MySql 性能影响大吗?
【发布时间】:2011-11-08 07:18:51
【问题描述】:

当用户在我的网站上注册时,他们会在我的一个数据库中创建自己的表。此表存储用户发布的所有帖子。 我还想做的是为他们生成他们自己的 MySql 用户——该用户只有从他们的表中读取、写入和删除的权限。

创建这不应该是一个问题 - 我有谷歌。

我想知道的是,假设我在未来某一时刻为自己计时 10,000,000 或更多用户,那么有这么多 MySql 用户会影响我的数据库性能吗?

【问题讨论】:

  • 我会更担心拥有 10,000,000 个表的数据库,而不是拥有 10,000,000 个用户的数据库。这种“每用户一张桌子”的想法听起来像是糟糕的设计,为什么不只拥有一个表格和一个用户 ID 字段。
  • YES,10,000,000个用户让mysql.mysql里面的表很胖。如果你真的有1000万用户,你应该有更多的预算,这样你才能做得更好硬件、数据库方面的解决方案。
  • 用户信息存储在一个表中,因为这是常用的。 “每个用户的表格”存储仅在有人访问他们的个人资料页面时才会使用的信息。那是一种不好的技术吗? (我是数据库新手)而且我的网站没有 10,000,000 名用户,它目前仅处于开发的第一阶段 - 但我希望它能够从偏移量支持大量用户而不是如果网站起飞,我必须重新设计它。好的,谢谢 - 我不会使用“每个用户的用户”的想法。

标签: mysql


【解决方案1】:

是的,它会降低你的表现。通常,服务器应用程序使用具有多个连接的数据库连接池(例如 app_user 连接了 5 次)。每个 SQL 请求都由这些连接之一处理。这样一来,创建新连接、处理查询和删除连接的开销就会降到最低。

现在,在您的场景中,每个用户都有自己的表和自己的用户。这意味着如果用户登录到您的应用程序,他必须打开自己的连接,因为他必须使用他的特定用户帐户。现在必须打开 10,000 个连接,而不是只有 5 个连接。这不会扩展,因为每个连接都有自己的线程并使用一些内存空间。此外,只有大约 64k 端口可供您的连接使用。

因此您的应用程序无法针对那么多用户进行扩展。

【讨论】:

    【解决方案2】:

    为了回答你的问题,在我解释你做错的原因之前,快速点...

    性能损失将来自于拥有大量表格。 (限制是巨大的,所以如果你达到那么高,我会看在上帝的份上,希望你招募一个可以把你的数据库拍傻的人,并解释你为什么这么多地破坏它)。请原谅我的苛刻:)

    好的,现在谈谈你应该如何做。

    多租户

    首先,您需要了解如何设计专为多租户应用程序设计的数据库。这正是你通过它的声音创造出来的,但你做错了完全。我怎么强调都不过分。

    这里有一些你应该立即阅读的资源。

    然后阅读这个问题: - How to design a multi tenant mysql database

    在你完成之后。您应该了解 ACL(访问控制列表)。

    如果您解释了您要建模的数据类型,我很乐意用一个简单的表架构更新这篇文章,以匹配您可能需要的内容。

    【讨论】:

    • 我 17 岁,我真的负担不起招募任何人 ;) 我没有意识到桌子会导致性能下降 - 我很感谢你指出了这一点为了我。我还没有真正开始设计数据库 - 但我会通读您提供的链接,以便我知道如何正确地做,谢谢。
    • 你不招聘任何人。我只是说如果你的用户达到 10000000,那么你很可能刚刚碰到了一个金矿,在这种情况下你肯定可以雇佣有人来解决问题:)
    • 啊,是的,那时我们都在考虑时间线的不同端 :) 如果网站起飞,您可以放心,我会聘请在该领域有经验的人!在我真正尝试之前,我似乎有很多关于 MySql 的知识要学习 - 所以我会为自己找到一些书和好文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多