2009-05-01 17 views
6

私はジュエリー卸売業者のウェブサイトを運営しています。MySQLストアドプロシージャとPHPスクリプト

すべての製品の価格は、毎晩更新される現在の地金修正を使用して計算されます。

現在のところ、ウェブサイトの計算は、現在の状況下でうまく動作するphpインクルード関数を使って計算されています。

約10,000商品がありますが、価格はリアルタイムで計算されます(Webページが要求されたとき)。計算はシンプルですが、その中には50+程度のものがたくさんあります。トラフィックの増加が現在のスクリプトを遅くするかもしれないと心配しています。

私はサイトを再設計しており、代わりに計算を行うためにMySQLでプロシージャを作成することが有益かどうか疑問に思っていました。

これは、現在のPHPスクリプトより速いと思われますか? 手順を使用する上で参考になる参考資料はありますか?

+0

すべてのコメントとリンクをありがとう。 私はそれを変えることの将来の頭痛を考慮して、 "それが壊れていないなら、それを修正しないでください"アプローチをとると思います。 – ticallian

+2

私の答えをdownvoted誰のために、あなたはなぜ精巧にしてくださいできますか?私はそれが有効な答えであると信じています。 – Unknown

答えて

4

これについて考えている理由がパフォーマンスとスケーラビリティに起因する場合は、PHPで計算を続行することをお勧めします。

これは、PHPにパフォーマンス上のペナルティがあるかどうかにかかわらず、Webアプリケーションを拡大するときに、複数のデータベースサーバーよりも複数のWebサーバーに移動するほうがずっと簡単です。したがって、PHPでは計算を多くし、MySQLでは計算を少なくする方が望ましいです。パフォーマンス面以外

、私はまだ一般的にはあまり移植することができ

  • ため、アプリケーション内のロジックを持つの賛成でストアドプロシージャを避けることを好みます。ストアドプロシージャは、アプリケーションの新しいインスタンスを展開するのに必要な労力を追加します。
  • これらはPHPとは異なる言語で書かれているため、PHP開発者は理解しにくいかもしれません。
  • ソース管理を維持するのが難しい場合があります。

ストアドプロシージャを使用する場合は、これらの問題はもちろん、すべての問題を解決することができます。

10

ストアドプロシージャとphpのベンチマークです。

http://mtocker.livejournal.com/45222.html

ストアドプロシージャは、10Xによって遅かったです。

ます。また、この時に見たいと思うかもしれません:

http://www.tonymarston.net/php-mysql/stored-procedures-are-evil.html

+1

なぜこれがダウンリストされたのか分かりません。私はそのベンチマークの正確さについて懐疑的です。 – thomasrutter

+0

私はどちらか分かりません。私は正当な回答のために一日中downvotedされています。 – Unknown

+4

この問題が発生しました。コメントを倒したい人もいるし、意図しない人がクリックすることもある。私は、SOがユーザーに理由を投稿またはコメントが却下された理由を残すように強制したらいいですね。ダウン投票は、他の人の改善に役立つはずであり、誰かの不満を払拭する方法であってはなりません。 –

3

すべてのページリクエストに応じて価格を更新するために絶対に必要であり、あなたがサイトは多くのトラフィックを取得されることを心配している場合私はストアドプロシージャをお勧めしません。

(おそらくmemcachedを使用して)メモリ内にあなたが使っている情報をキャッシュし(これをやっていることを知らずに手直しするのは難しい)、PHPから読み続けることをお勧めします。

私はストアドプロシージャとメモリ内のPHPパフォーマンスとの間でベンチマークを行っていませんが、プロシージャがクエリに直接影響しない場合はキャッシュすることをお勧めします。

+0

memcachedを使用することについての素晴らしいヒント – thomasrutter

2

要するに、それらをPHPで保管してください。メンテナンスが簡単です。

現在のサイトでは、phpでのcalcの速度とデータベースでのcalcの速度の差が目立つようなパフォーマンス上の問題が発生する可能性はほとんどありません。あなたがそうだったなら、サイトのコードに根本的に間違ったことがあります。 (これが行われている場合はリアルタイム通貨換算が含まれます)。

と言っているのは、PHPでの計算を維持することが、制御とデバッグが容易なので、通常は好まれます。それはウェブコーダーがデータベースをいくらか知ることを要求するが、それは通常問題ではない。コードの速度の90%はコードの10%で発生し、dbaが発生した場合にdb負荷を引き起こすクエリを識別するのは簡単です。

関連する問題