2009-08-24 11 views
0

PHPとMySQLでうまくいくかなりのCPUとメモリ集約的な処理を実行するための優れたサーバー側言語です。現在、私はかなり大きなデータベースの大きなサブセットに基づいて計算を実行するphpスクリプトを持っており、その計算に基づくデータベース(1.5millionsの行)を更新するよりもです。現在の実装は非常に遅く、サーバー上の他のアクティビティに応じて1〜2時間かかります。私はこれを改善したいと思っていたのですが、人々の意見がこのタイプの仕事のための良い言葉になっているのか疑問に思っていましたか?CPU /メモリ集約型プロセスのサーバー側言語

答えて

2

言語は問題ではありません。あなたの問題はおそらくです。あなたはこれらの計算を行っています。可能であれば、SQLでこれを書いたほうが良いかもしれません。それは...ですか?何してるの?

+0

はい、可能です。最良の結果が得られると思いますか? – giroy

+0

最も確実です。それはあなたのサーバ上で正しく実行されていることを意味し、データはPHP /何かに転送する必要はありません。 –

3

ボトルネックはどこですか?実際のプロファイリングを実行し、問題の原因を正確に把握してください。それはDB I/Oですか?それはCPUですか?アルゴリズムは非効率的ですか?遅いライブラリメソッドをタイトな内部ループで呼び出すのですか?事前計算を使用することができます。

あなたはA地点からB地点に移動する必要があり、トラック、車、自転車、飛行機、ジェット機、ヘリコプターを提供する必要があります。答えは文脈がなくても意味をなさないでしょう。

+0

プロファイリングに適したツールをお勧めしますか? – giroy

+0

http://www.linuxjournal.com/article/7213 有用かもしれません。これはPython用のcprofileモジュールのように見えますが、これはかなり便利です。 –

0

あなたのボトルネックは計算ではないと思われます。数百万のレコードを更新するには数時間かかります。

この場合、c/C++でMySQL用のカスタマイズされた関数を作成し、その関数をストアドプロシージャで実行することができます。

私たちのデータベースでは、キーローテーション中にいくつかの機密フィールドを再暗号化しています。キーの回転時間を数日から数時間に短縮しました。しかし、MySQLの独自のコピーを維持するのは苦労です。私たちは代替案を探していましたが、このアプローチのパフォーマンスに近いものはありません。

関連する問題