我正在为珠宝批发商运营一个网站。
所有产品的价格均使用目前每晚更新的金银修正计算。
目前,对于该网站,计算是通过php include函数计算出来的,在当前情况下可以正常工作。
大约有10,000种产品,但价格是实时计算的(即请求网页时)。计算很简单,但有很多(大约50+),我担心流量增加可能会减慢当前脚本的速度。
我正在重新设计该网站,并想知道在MySQL中创建一个程序来进行计算是否有益。
这可能比当前的PHP脚本更快吗? 有人知道有关使用程序的任何好的阅读参考吗?
答案 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中进行更少计算。
除了性能方面,我仍然倾向于避免使用存储过程来支持在应用程序中使用逻辑,因为
如果你想使用存储过程,这些问题当然可以解决,没有太大的困难。
答案 2 :(得分:4)
如果绝对有必要更新每个页面请求的价格,并且您担心该网站会获得大量流量,我建议您不要使用存储过程。
我建议在内存中缓存你使用的信息(很难详细说明,而不知道你是怎么做的)(也许是使用memcached)并继续从PHP中读取它。
我承认我没有在存储过程与内存中PHP性能之间进行任何基准测试,但如果该过程不会直接影响您的查询,我建议使用缓存。
答案 3 :(得分:3)
简而言之,请将它们保存在php中。更易于维护。
对于当前站点,不太可能遇到性能问题,其中php中的calc速度与数据库中calc的速度之间的差异是显而易见的。如果你那时网站的代码存在根本性的错误。 (这包括完成时的实时货币转换)。
说,在PHP中保留calc通常是首选,因为它更容易控制和调试。它确实需要Web编码器稍微了解数据库,但这通常不是问题。 90%的代码加速发生在10%的代码上,如果发生这种情况,dba就很容易识别导致数据库负载的查询。