【问题标题】:Am I underestimating MySQL?我低估了 MySQL 吗?
【发布时间】:2010-03-08 12:26:44
【问题描述】:

我即将在我的网站上实现一项功能,该功能根据用户在其库中已有的内容向用户推荐内容(例如 Last.fm)。一个表包含他们添加的内容的所有记录,所以一行可能看起来像:

--------------------
| userid | content |
--------------------
|   28   |    a    |
--------------------

当我想为用户推荐一些内容时,我使用查询来获取所有在其库中添加内容的用户 ID。然后,在这些用户 ID 中,我进行另一个查询,查找这些用户中下一个最常见的内容(fx.'b'),并将其显示给用户。

我的问题是当我在这里考虑全局时。假设最终我的网站将在表中保存大约 500.000 行,这会使 MySQL 响应非常慢还是我在这里低估了 MySQL?

【问题讨论】:

  • 另一个方面是这种查询的运行频率。如果每秒尝试 1000 次,即使查询通常在几分之一秒内响应,您也可能会遇到问题。
  • 感谢所有精彩的回答!

标签: php mysql


【解决方案1】:

在你测试之前你不会知道这一点,所以开始原型设计吧。

通常,500 000 行几乎没有。当我的表达到 5000 万时,我有点担心,因为那时我必须清除旧数据需要一段时间——尽管查询数据仍然很快。

但这一切都取决于您需要的查询类型。跨越所有这 5000 万行的查询确实会非常慢,仅涉及这 5000 万行中的 50k 的查询很快。 对于您的问题,您需要测量查询、调整查询、表/索引和 mysql 本身。

【讨论】:

    【解决方案2】:

    如果您为查询设计适当的索引,500 000 将不是问题。它还取决于您的硬件配置和拓扑,但总的来说应该没问题。

    【讨论】:

      【解决方案3】:

      真正的问题应该是:

      如果 MySQL 不能在 500,000 行数据上使用整数索引,那么假设 MySQL 的使用在很久以前就会消失,这是否合理?

      如果没有任何 RAM 或 CPU 或存储引擎限制,它应该可以正常工作。

      【讨论】:

        【解决方案4】:

        为这些类型的查询创建了数据库。如果磁盘空间不足,您可能需要调整磁盘空间和 RAM,但使用适当的索引应该是安全的。

        【讨论】:

          【解决方案5】:

          500.000 个项目表在 Foxpro 时代并不引人注目 - 那是 10 年前 ;) 今天它完全没有。只要确保你运行适当的硬件;)

          【讨论】:

            【解决方案6】:

            简而言之:是的,您低估了 MySQL(通常可能是大多数商业上使用的关系数据库)。如果他们没有将其设计为支持超过 50 万行,那么他们可能不会成为世界上最受欢迎的数据库之一。

            我认为 nos 有一个很好的答案,因为他正确地指出您需要对系统进行压力测试才能了解其限制;但他也提供了一个数字(5000 万——我不能保证,但听起来他研究过这种规模的数据库)至少让你知道球场有多大。

            那么:500k?可行的。 500亿?对那个不太有信心。

            【讨论】:

            • 500 亿?听起来是个挑战! 破解 Python
            • @Aiden:哈,我从来没有做过任何事情,甚至接近 500亿。这就是为什么我只是说“不太自信”(而不是“不可行”)。现在我想知道现存最大的数据库是什么。
            • businessintelligencelowdown.com/2007/02/top_10_largest_.html 说(以数字形式)亚马逊为 42 TB。
            【解决方案7】:

            比原始行数更重要的是正确的索引,以及(更重要的是)您编写什么样的查询。

            查询 500k 行并不重要,尤其是在编制索引时。另一方面,如果您编写一个需要对 500k * 500k * 500k 行进行全表扫描的 3 路自连接,那么您就会遇到问题。

            【讨论】:

              猜你喜欢
              • 2021-07-17
              • 1970-01-01
              • 2012-04-02
              • 1970-01-01
              • 2021-05-26
              • 1970-01-01
              • 2010-11-04
              • 1970-01-01
              • 2017-12-01
              相关资源
              最近更新 更多