MySQL存储过程与PHP脚本

时间:2009-05-01 07:45:10

标签: mysql stored-procedures

我正在为珠宝批发商运营一个网站。

所有产品的价格均使用目前每晚更新的金银修正计算。

目前,对于该网站,计算是通过php include函数计算出来的,在当前情况下可以正常工作。

大约有10,000种产品,但价格是实时计算的(即请求网页时)。计算很简单,但有很多(大约50+),我担心流量增加可能会减慢当前脚本的速度。

我正在重新设计该网站,并想知道在MySQL中创建一个程序来进行计算是否有益。

这可能比当前的PHP脚本更快吗? 有人知道有关使用程序的任何好的阅读参考吗?

4 个答案:

答案 0 :(得分:14)

这是存储过程与php的基准。

http://mtocker.livejournal.com/45222.html

存储过程慢了10倍。

您可能还想看一下:

http://www.tonymarston.net/php-mysql/stored-procedures-are-evil.html

答案 1 :(得分:8)

如果您考虑这个原因是由于性能和可伸缩性,那么我建议继续使用PHP进行计算。

原因在于,无论您的PHP是否存在性能损失,在扩展Web应用程序时,移动到多个Web服务器通常比多个数据库服务器更容易。因此,最好在PHP中进行更多计算,在MySQL中进行更少计算。

除了性能方面,我仍然倾向于避免使用存储过程来支持在应用程序中使用逻辑,因为

  • 它可以减少便携性。存储过程增加了部署应用程序新实例所需的工作量。
  • 它们使用的语言与PHP不同,因此PHP开发人员可能会发现它们不易理解。
  • 将它们保存在源代码管理中可能很困难。

如果你想使用存储过程,这些问题当然可以解决,没有太大的困难。

答案 2 :(得分:4)

如果绝对有必要更新每个页面请求的价格,并且您担心该网站会获得大量流量,我建议您不要使用存储过程。

我建议在内存中缓存你使用的信息(很难详细说明,而不知道你是怎么做的)(也许是使用memcached)并继续从PHP中读取它。

我承认我没有在存储过程与内存中PHP性能之间进行任何基准测试,但如果该过程不会直接影响您的查询,我建议使用缓存。

答案 3 :(得分:3)

简而言之,请将它们保存在php中。更易于维护。

对于当前站点,不太可能遇到性能问题,其中php中的calc速度与数据库中calc的速度之间的差异是显而易见的。如果你那时网站的代码存在根本性的错误。 (这包括完成时的实时货币转换)。

说,在PHP中保留calc通常是首选,因为它更容易控制和调试。它确实需要Web编码器稍微了解数据库,但这通常不是问题。 90%的代码加速发生在10%的代码上,如果发生这种情况,dba就很容易识别导致数据库负载的查询。