大规模的PHP阵列与MySQL数据库?

时间:2013-09-09 20:15:36

标签: php mysql arrays multidimensional-array

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

我的客户可能有1000多种产品。我研究了其他类似的问题,其中许多人说数组可能更快,但是没有一个能处理这种规模的数组。

我个人更愿意使用数组,因为我对MySQL的知识非常有限,但如果它意味着牺牲了大量的速度,那么我宁愿使用数据库。对于我的案例,您认为哪种选择更合适?

4 个答案:

答案 0 :(得分:5)

其他答案是正确的 - 但出于错误的原因。

将数据保存在PHP数组中,获取速度比从数据库获取要快得多 - 即使数据集缓存在内存中也是如此。问题是在普通的PHP体系结构中,每个请求都由一个单独的进程处理。因此,每个需要访问数据的请求都必须将整个数据集加载到内存中。这需要时间。执行此操作而不是从数据库中检索项目变得更加昂贵的点取决于许多不同的因素 - 但作为一个粗略的经验法则,它在100条记录的区域内。有些应用程序可以使用此模型 - 但它们依赖于非常小的数据量和受控的更改/管理数据的过程。

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

如果你向某人收取执行代码的费用,那么试图在内存中实现这​​一点应该是非常非常糟糕的。

答案 1 :(得分:4)

就我的诚实而言,我会选择数据库。这是我的推理。

使用数据库,您将获得连接时间,通信和查询时间方面的少量性能损失。然而,收益将来自几个方面。

  1. 更好更容易操作。
  2. 稳定性,安全性和云功能。
  3. 因为处理巨大的阵列将成为后方的巨大痛苦。
  4. 此外,使用肉眼数据库查看数据会更容易。

    希望这有帮助!

答案 2 :(得分:2)

使用数组的代码将更简单,并且不会出现MySQL数据库的复杂性。如果数据是静态的,并且该数据没有其他用途或用户,那么该数组就可以了。

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

答案 3 :(得分:2)

让我们来谈谈内存消耗。

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

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

但是你不能只用一个值创建一个有用的数据结构,所以你的1000个元素可能是一个带有子元素的数组。我们假设每个数组只有10个元素。对于每个元素的数组,这将是1440个字节,乘以1000个元素。不是我们接近1.440.000字节。还是喜欢“什么都没有”,但文字怎么样?那个更复杂的子结构呢?到底有多大?

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

最后:使用数据库!推送内存中的所有数据没有任何好处。