Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我低估了MySQL吗?_Php_Mysql - Fatal编程技术网

Php 我低估了MySQL吗?

Php 我低估了MySQL吗?,php,mysql,Php,Mysql,我将在我的网站上实现一个功能,根据用户在图书馆la Last.fm中已有的内容向用户推荐内容。一个表包含他们添加的内容的所有记录,因此一行可能类似于: -------------------- | userid | content | -------------------- | 28 | a | -------------------- 当我想向用户推荐一些内容时,我会使用一个查询来获取所有在其库中添加了内容的用户id。然后,在这些用户id中,我进行另一个查询,查找这些用

我将在我的网站上实现一个功能,根据用户在图书馆la Last.fm中已有的内容向用户推荐内容。一个表包含他们添加的内容的所有记录,因此一行可能类似于:

--------------------
| userid | content |
--------------------
|   28   |    a    |
--------------------
当我想向用户推荐一些内容时,我会使用一个查询来获取所有在其库中添加了内容的用户id。然后,在这些用户id中,我进行另一个查询,查找这些用户中下一个最常见的内容b',并向用户显示


我的问题是当我想到这里的大局时。假设我的站点最终会在表中保留大约50万行,这会导致MySQL响应非常慢还是我低估了MySQL?

50万行不会成为问题,如果您为查询设计适当的索引。它还取决于您的硬件配置和拓扑结构,但一般来说应该是可以的。

500000如果您为查询设计了适当的索引,则不会成为问题。这还取决于您的硬件配置和拓扑结构,但一般来说应该是正常的。

真正的问题应该是:

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


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

真正的问题应该是:

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


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

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

数据库是为此类查询而设计的。如果磁盘空间和RAM不足,您可能需要调整磁盘空间和RAM,但如果有适当的索引,您应该可以安全使用。

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

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

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

在测试之前,您不会知道这一点,所以开始原型化

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

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

500.000项表在Foxpro时代并不引人注目——那是10年前的事了;今天,这完全是空谈。只需确保运行适当的硬件

50万个项目表在Foxpro时代并不引人注目——那是10年前的事了;今天,这完全是空谈。只需确保运行适当的硬件

简言之:是的,您低估了MySQL,也低估了通常最商业化使用的关系数据库。如果他们没有将其设计为支持超过500k行,它们可能不会成为世界上最流行的数据库之一

我认为nos有一个很好的答案,因为他正确地指出,为了了解系统的局限性,您需要对系统进行压力测试;但他也提供了5000万美元——我不能担保,但听起来他在这种规模的星展上工作,至少让你知道球场有多大


那么:50万?可行。500亿?简而言之:是的,你低估了MySQL,而且可能是最商业化使用的关系数据库。如果他们没有将其设计为支持超过500k行,它们可能不会成为世界上最流行的数据库之一

我认为nos有一个很好的答案,因为他正确地指出,为了了解系统的局限性,您需要对系统进行压力测试;但他也提供了5000万美元——我不能担保,但听起来他在这种规模的星展上工作,至少让你知道球场有多大


那么:50万?可行。500亿?对此不太自信。

比原始行数更重要的是正确的索引,更重要的是您编写的查询类型

对500k行进行查询算不了什么,尤其是在
索引。另一方面,如果您编写的3路自联接需要对500k*500k*500k行进行完整的表扫描,那么您将遇到一个问题。

比原始行数更重要的是正确的索引,更重要的是您编写的查询类型


对500k行进行查询算不了什么,尤其是在索引时。另一方面,如果您编写的3路自连接需要对500k*500k*500k行进行完整的表扫描,那么您将遇到问题。

500亿?听起来是个挑战!裂开Python@Aiden:哈,我从来没有做过任何事情,哪怕是近500亿。这就是为什么我只是说不太自信,而不是不可行。现在我想知道现存最大的DB是什么。亚马逊以42 TB的数字形式表示,5.0亿?听起来是个挑战!裂开Python@Aiden:哈,我从来没有做过任何事情,哪怕是近500亿。这就是为什么我只是说不太自信,而不是不可行。现在我想知道现存最大的DB是什么。Amazon以42 TB的数字形式表示。另一个方面是这种查询的运行频率。如果每秒尝试1000次,则即使查询通常在几分之一秒内响应,您也可能会遇到问题。感谢所有伟大的答案!另一个方面是这种查询的运行频率。如果每秒尝试1000次,则即使查询通常在几分之一秒内响应,您也可能会遇到问题。感谢所有伟大的答案!