2009-05-01 55 views
6

我正在运行珠宝批发商的网站。MySQL存储过程vs PHP脚本

所有产品的价格都是使用每晚更新的当前金条修正计算的。

目前,该网站的计算是通过一个PHP制定了包括函数,这在目前情况下正常工作。

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

我重新设计网站,并想知道它是否将是有益的在MySQL中创建一个程序做的计算来代替。

这可能是目前的PHP脚本更快? 任何人都知道使用过程的任何良好的阅读参考?

+0

感谢您的所有意见和链接。 我想我会采取“如果它没有坏,不解决它”的方法考虑未来的头痛,改变它。 – ticallian 2009-05-01 08:26:05

+2

对于那些低估了我的答案的人,能否详细说明原因?我相信这是一个有效的答案。 – Unknown 2009-05-01 08:38:31

回答

4

如果你想这样做的原因是由于性能和可扩展性,那么我会建议继续在PHP计算。

这样做的原因是,不管是否有你的PHP性能损失,当你缩放你的web应用它通常更容易转移到比多个数据库服务器的多个Web服务器。因此,最好在PHP中进行更多的计算,而在MySQL中进行更少的计算。

除了性能方面,我仍然一般喜欢避免有利于存储过程在应用程序因为

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

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

3

如果它是绝对必要的更新在每个页面请求的价格,您担心自己的网站会得到大量的流量我不会推荐存储过程。

我建议缓存使用的信息(这是很难不知道如何你这样做来阐述)在内存中(可能使用memcached的),并保持从PHP读取它。

我承认我没有在存储过程和内存中PHP性能之间做任何基准测试,但如果过程不会直接影响您的查询,我推荐缓存。

2

总之,让他们在PHP。更容易维护。

对于目前的网站,不太可能出现性能问题,因为php中calc的速度与数据库中calc的速度之间的差异是显而易见的。如果你是那么这个网站的代码有一些根本性的错误。 (如果完成,这包括实时货币转换)。

这样说,保持calc在PHP中通常是首选,因为它更容易控制和调试。它确实需要网页编码人员在某种程度上了解数据库,但这通常不是问题。 90%的代码加速在10%的代码上发生,并且如果dba发生了这种情况,dba就很容易识别导致数据库加载的查询。