2009-08-24 65 views
0

什麼是一個很好的服務器端語言做一些漂亮的CPU和內存密集型的東西,與PHP和MySQL發揮良好。目前,我有一個php腳本,它基於一個相當大的數據庫的大部分子集運行一些計算,並根據這些計算(1.5百萬行)更新數據庫。目前的實施非常緩慢,取決於服務器上的其他活動需要1-2個小時。我希望能夠改善這一點,並想知道人們對這種類型的任務有何看法?cpu /內存密集型進程的服務器端語言

回答

2

語言不是問題,你的問題可能是其中你正在做這些計算。聽起來像你可能會更好的寫在SQL中,如果可能的話。是嗎?你在做什麼?

+0

是的,應該是可以的。你認爲這會產生最好的結果嗎? – giroy 2009-08-24 01:49:19

+0

絕對是。這意味着它可以在你的服務器上正確執行,並且數據不需要傳輸到PHP /無論首先。 – 2009-08-24 01:53:07

3

瓶頸在哪裏?運行一些真正的分析,看看究竟是什麼導致了這個問題。它是數據庫I/O嗎?它是CPU嗎?該算法效率低下嗎?你是否在緊密的內部循環中調用緩慢的庫方法?可以使用預先計算。

你幾乎在問什麼車你需要從A點到B點,而且你已經提供了卡車,汽車,自行車,飛機,噴氣式飛機和直升機。沒有更多的上下文,答案就沒有意義了。

+0

你可以請建議任何好的工具進行分析? – giroy 2009-08-24 01:51:46

+0

http://www.linuxjournal.com/article/7213 可能有用,也可能沒用。這看起來像Python的cprofile模塊,我發現它非常方便。 – 2009-08-24 14:44:54

0

我懷疑你的瓶頸不是計算。絕對需要幾個小時才能更新幾百萬條記錄。

如果是這樣的話,你可以在MySQL的c/C++中編寫一個自定義函數,並在存儲過程中執行該函數。

我們在我們的數據庫中執行此操作,以便在密鑰旋轉期間對一些敏感字段進行重新加密。它縮短了從幾天到幾個小時的密鑰輪換時間。然而,維護你自己的MySQL副本是一件痛苦的事情。我們一直在尋找替代品,但沒有任何結果與這種方法的性能接近。