大型PHP数组或MySQL临时内存表?

时间:2010-06-14 18:40:10

标签: php mysql key-value

如何在一个流程中临时存储数千个key => valuekey => array对。 key上的查找将在流程中连续完成,并在流程结束时丢弃数据。

我应该使用数组吗?临时MySQL表?或介于两者之间?

6 个答案:

答案 0 :(得分:6)

这取决于数千个意味着多少,以及数组在内存中的大小。如果你可以在PHP中处理它,你应该这样做,因为使用mysql会产生一些开销。

但如果您在共享主机上,或者您在php.ini中限制memory_limit并且无法增加它,则可以在MySQL中使用临时表。

此外,您可以使用一些简单快速的键值存储,例如MemcachedRedis,它们也可以仅在内存中工作,并且可以快速查找键(Redis承诺{{3} })

答案 1 :(得分:4)

几千?!你的意思是它可能占用几个KILObytes?!

你确定这会成为一个问题吗?在优化之前,以最简单,最简单的方式编写代码,然后检查真正需要优化的内容。此外,只有基准和完整代码才能确定正确的缓存方式。其他一切都是浪费时间和所有邪恶的根源......

答案 2 :(得分:2)

Memcached是一种流行的缓存数据的方式。

如果您只运行那个进程并且不需要担心并发访问,我会在php中进行。如果您有多个进程,我会使用一些已建立的解决方案,因此您不必担心细节。

答案 3 :(得分:1)

这完全取决于您的应用程序和硬件。我敢打赌,让数据库(尤其是MySQL)只做数据库工作。我的意思是,存储和检索数据并不需要太多工作。其他DBMS可能是真正有效的(例如Informix)但遗憾的是,MySQL不是。 临时表可能比PHP数组更有效,但是增加了数据库的连接数。

可扩展性也是一个问题。用PHP做这件事就更好了。

答案 4 :(得分:1)

如果我们没有得到完整的图片,那么很难直截了当地回答。 它取决于您获取数据的位置。

  • 如果您的数据位于数据库中,最好将其保存在那里并在那里操作它,然后获取所需的项目。如果必要,使用临时表

  • 如果您的数据已经在PHP中,那么最好保留在那里。尽管在PHP中处理数据非常密集

答案 5 :(得分:0)

  • 如果只用少量查询完成数据查找,请使用mysql临时表。

  • 如果有很多数据查找,它几乎总是最好将它存储在php端。 (连接开销)