2009-08-24 35 views
0

什么是一个很好的服务器端语言做一些漂亮的CPU和内存密集型的东西,与PHP和MySQL发挥良好。目前,我有一个php脚本,它基于一个相当大的数据库的大部分子集运行一些计算,并根据这些计算(1.5百万行)更新数据库。目前的实施非常缓慢,取决于服务器上的其他活动需要1-2个小时。我希望能够改善这一点,并想知道人们对这种类型的任务有何看法?cpu /内存密集型进程的服务器端语言

回答

2

语言不是问题,你的问题可能是其中你正在做这些计算。听起来像你可能会更好的写在SQL中,如果可能的话。是吗?你在做什么?

+0

是的,应该是可以的。你认为这会产生最好的结果吗? – giroy 2009-08-24 01:49:19

+0

绝对是。这意味着它可以在你的服务器上正确执行,并且数据不需要传输到PHP /无论首先。 – 2009-08-24 01:53:07

3

瓶颈在哪里?运行一些真正的分析,看看究竟是什么导致了这个问题。它是数据库I/O吗?它是CPU吗?该算法效率低下吗?你是否在紧密的内部循环中调用缓慢的库方法?可以使用预先计算。

你几乎在问什么车你需要从A点到B点,而且你已经提供了卡车,汽车,自行车,飞机,喷气式飞机和直升机。没有更多的上下文,答案就没有意义了。

+0

你可以请建议任何好的工具进行分析? – giroy 2009-08-24 01:51:46

+0

http://www.linuxjournal.com/article/7213 可能有用,也可能没用。这看起来像Python的cprofile模块,我发现它非常方便。 – 2009-08-24 14:44:54

0

我怀疑你的瓶颈不是计算。绝对需要几个小时才能更新几百万条记录。

如果是这样的话,你可以在MySQL的c/C++中编写一个自定义函数,并在存储过程中执行该函数。

我们在我们的数据库中执行此操作,以便在密钥旋转期间对一些敏感字段进行重新加密。它缩短了从几天到几个小时的密钥轮换时间。然而,维护你自己的MySQL副本是一件痛苦的事情。我们一直在寻找替代品,但没有任何结果与这种方法的性能接近。