2009-05-01 67 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就很容易識別導致數據庫加載的查詢。