大规模PHP阵列vs MySQL数据库?

大规模PHP阵列vs MySQL数据库?,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我在脑子里争论我应该在MySQL中使用大规模多维数组还是数据库。我是为一个客户开发的,他的业务有很多产品。在这个多维数组中,我将包含每个产品的产品标题、描述、图像链接和类别 我的客户大概有1000多种产品。我研究过其他类似的问题,其中许多人说阵列可能更快,但他们中没有一个处理这种规模的阵列 我个人更愿意使用数组,因为我对MySQL的了解非常有限,但如果这意味着要牺牲大量的速度,那么我宁愿使用数据库。对于我的情况,你认为哪一个更合适?p> 使用数组的代码会更简单,不会像MySQL数据库那样复杂。如

我在脑子里争论我应该在MySQL中使用大规模多维数组还是数据库。我是为一个客户开发的,他的业务有很多产品。在这个多维数组中,我将包含每个产品的产品标题、描述、图像链接和类别

我的客户大概有1000多种产品。我研究过其他类似的问题,其中许多人说阵列可能更快,但他们中没有一个处理这种规模的阵列


我个人更愿意使用数组,因为我对MySQL的了解非常有限,但如果这意味着要牺牲大量的速度,那么我宁愿使用数据库。对于我的情况,你认为哪一个更合适?p> 使用数组的代码会更简单,不会像MySQL数据库那样复杂。如果该数据是静态的,并且该数据没有其他用途或用户,那么该数组就可以了


另一方面,如果该数据需要更改,或者该数据对其他业务功能有用,那么MySQL数据库将是一种选择。

老实说,我会选择数据库。这是我的理由

使用数据库时,连接时间、通信时间和查询时间都会有一点性能损失。然而,收益将来自几个方面

  • 更好、更容易操作
  • 稳定性、安全性和云能力
  • 因为处理庞大的阵列将成为后方的巨大痛苦
  • 此外,使用数据库肉眼查看数据会容易得多


    希望这有帮助

    让我们稍微谈谈内存消耗

    PHP中的一个数组元素消耗144字节的数据,不计算任何字符串文本(额外)

    然后,一个包含1000个元素的数组使用144.000字节加上文本字符串——这看起来并不多

    但是您不能仅使用一个值创建有用的数据结构,因此您的1000个元素可能是一个包含子元素的数组。假设每个数组只有10个元素。每个元素的数组将有1440字节,乘以1000个元素。不是,我们正在接近1.440.000字节。还是喜欢“没什么”,但是文字呢?那么更复杂的子结构呢。它到底有多大

    此外,对于每个并发请求,该数组必须在内存中。而且必须以某种方式加载。对阵列进行非序列化确实需要相当大的CPU功耗


    最后:使用数据库!将所有数据放入内存没有任何好处。

    其他答案是正确的,但原因是错误的

    将数据保存在PHP数组中,即使数据集缓存在内存中,也比从数据库中获取数据快得多。问题在于,在正常的PHP架构中,每个请求都由一个单独的进程处理。因此,每个需要访问数据的请求都必须将整个数据集加载到内存中。这需要时间。执行此操作而不是从数据库中检索项目的成本会变得更高,这取决于许多不同的因素——但粗略的经验法则是,它大约有100条记录。有些应用程序使用这种模型是有意义的,但它们依赖于非常小的数据量和更改/管理数据的受控过程

    您的下一个问题是,您可能希望针对股票记录一些交易——这意味着更改数据——这意味着序列化访问以确保不会同时发生两个单独的交易。在没有死锁的情况下,在PHP中实现这一点是不可能的(没有专门的守护进程来裁决)


    如果你向某人收取实现代码的费用,那么很明显,在内存中实现这一点是非常非常糟糕的。

    这是你学习MySQL的机会,使用它吧!(是的,它比一个大数组好)一个数组中的1000个项目几乎什么都不是,除非你使用的是一个内存非常有限的系统。使用数据库!所有数据库引擎都已经实现了通用方法(例如“JOIN”)和优化。如果你打算使用数组,你需要自己用PHP编写这些代码。你意识到,每次加载页面时,所有的“记录”都必须经过计算并放入RAM,然后才能将html发送到浏览器,对吗?你意识到,每次加载页面时,PHP代码都会放入RAM并进行解释,对吗?您意识到,如果他使用MySQL数据库,那么每次加载页面时,都必须加载MySQL驱动程序,并与数据库建立连接,查询必须发送到数据库,结果集必须在HTML发送到浏览器之前检索到RAM(如果数据库不在同一台机器上,则通过网络),正确的?使用MySQL可能会增加所需的RAM数量,并增加将要执行的指令数量;这不是免费的。告诉人们不要使用数据库是制造维护噩梦的好方法。不使用数据库对性能没有好处。当然不是当他有1000多种产品的时候。现在,如果他只有两个,也许。但即便如此,他难道不应该期望公司扩大其目录,从而使用数据库吗?常识。而进行SQL查询以获取一个项目并不等于用于存储1000多个对象的RAM量。随着数组的增长,通过数据库索引查找数据将比在大型数组中循环更快。感谢您在这方面的所有想法。我决定使用MySQL数据库。从长远来看,这似乎更容易维护,因为随着时间的推移,我们可能会不断添加更多的产品。再次感谢。很高兴能帮上忙。如果您对通过php与MYSQL交互有任何疑问,请随时提问。我也可以