我应该在哪里进行计算,PHP或Mysql?

时间:2010-04-12 16:28:57

标签: php mysql

我现在一直在做很多计算。通常我更喜欢在PHP而不是MySQL中进行这些计算,尽管我知道PHP并不擅长这一点。我认为MySQL可能会更糟。但是我发现了一些性能问题:有些页面加载得太慢,30秒的时间限制对他们来说还不够!所以我想知道哪里有更好的计算地点,以及任何原则?建议将不胜感激。

8 个答案:

答案 0 :(得分:22)

使用可在服务器端过滤数据的RDBMS(GROUPING,SUMMING,AVG)可以完成的任何事情都应该在RDBMS中完成。

如果计算更适合PHP,那么很好,请继续使用,否则不要尝试用PHP做RDBMS。你将会失败。

答案 1 :(得分:3)

我建议使用RDBMS进行任何行级计算。

您不仅可以从更好的性能中受益,而且如果您需要切换到另一种脚本语言,那么它也会使您的应用程序更具可移植性,让我们说PHP到Python,因为您已经使用了数据进行排序,过滤和处理你的RBDMS。

它还有助于分离您的应用程序逻辑,它帮助我在MVC环境中工作时保持控制器清洁和整洁。

答案 2 :(得分:1)

我会说用c ++创建的语言进行计算。但是如果你在mysql和php之间做出选择,那就更好了。

答案 3 :(得分:1)

只需跟踪瓶颈的位置即可。如果您的表因为尝试运行某些计算而被锁定,则其他所有人都在队列中等待读取/写入所选表中的数据,并且队列将继续增长。

MySQL通常可以更快地处理您的命令,但PHP应该能够处理简单的问题,而不用太大惊小怪。当然,这并不意味着您应该多次ping数据库以进行相同的计算。

如果可以并且每天/小时更新一次cron作业,你可能最好缓存你的结果(请不要每分钟都做一次,你的托管服务提供商可能会讨厌你)。

答案 4 :(得分:1)

尽可能多地进行过滤和合并,以便将最少量的数据导入php。一旦拥有了最小数据集,那么它取决于您正在做什么,服务器负载以及可能还有其他因素。

如果你可以在两者中做同样好的事情,那么编写(和维护)的sql并不是那么复杂,那就去做吧。对于简单的数学运算,sql通常是一个不错的选择。对于字符串操作,其中字符串将以相同的长度结束或增长,php可能是一个不错的选择。

最重要的是请求尽可能少的数据。数据的操作,至少是sql可以做的,是检索和传输数据的第二步。

答案 5 :(得分:0)

cmptrgeekken是对的,我们需要更多信息。但是,如果您需要进行与数据库查询相关的计算或对数据库查询进行操作,则从数据库中比较certian字段,使数据库执行此操作。在SQL中进行特殊查询是cheape r(就时间问题而言,它已针对此进行了优化)但PHP和MySQL都是服务器端,在进行计算的地方并不重要。但就像我之前说的那样,如果他们使用数据库信息进行操作,那就制作一个更复杂的SQL查询并使用它。

答案 6 :(得分:0)

原生MySQL功能非常快。那么在你的查询中做有意义的事情。

如果您有多个服务器(即Web服务器和数据库服务器),请注意数据库服务器比Web服务器贵得多,因此如果您有大量流量或非常繁忙的数据库服务器,请不要执行此操作可以在Web服务器计算机上轻松/高效地处理附加内容,以帮助防止速度下降。

答案 7 :(得分:-2)

使用PHP,不要滞后你的MySQL做无休止的计算。如果你谈论的事情就像排序它可以使用MySQL这样的东西,SUM,AVG,但不要过度。