ストアドプロシージャを使用してデータを処理することと、検索後に関数にデータを供給することとでは、パフォーマンスが向上しますか?


8

タイトルはそれを要約します。私はPHPにかなり余裕があり、MySQLから取得した値を使用して必要なことを実行できますが、知識を広げるために、おそらくそれがロングラン。それらは同等ですか(最終的にはほぼ同じ量の処理が行われるため)、または一方が他方よりも明らかに有利な場合がありますか?


3
よい質問と長い議論のポイント.. APP側でどれくらいの量が、DB側でどれだけ行われるか。この質問は、あらゆる種類のDBとAPPの相互作用に当てはまるため、「RDBMS to APP-Layer」に言い換えることをお勧めします。
セバスチャンロス

2
この質問に追加したいのでとても悪いですが、追加する興味のあるatmはありません。これは素晴らしい質問であり、私が正規の
FAQに

私は実際にこの質問を考えていました。DBAにとってここで話題になっていたかどうかです。まったく違うものを探したところ、偶然見つけました。だから私の心を読むための+1
デレクダウニー2011年

回答:


6

それは、レコードをどのように処理しているか、およびネットワークアーキテクチャがどのように見えるかに大きく依存します。たとえば、ストアドプロシージャによってMySQLからPHPに送信されるデータの総量が減少し、PHPインスタンスとデータベースの間のリンクが比較的遅い場合、SPは確かに役立ちます。

PHP側でデータに対して行う「より重い」操作から始め、SPとして何を記述できるかを確認してから、ベンチマークを行うことをお勧めします。


5

データベースでより多くの処理を行うことに有利な点は、データベースが見えないものを最適化できないことです。例として、永続化クラスのプロパティをすべてのインスタンスの定数値に設定すると、データベースレイヤーで行うと確実にパフォーマンスが向上します。

反対の点は、データベースはセットベースの操作には適していますが、行ベースの操作にはあまり適していません。たとえば、行ごとに変化するタイムゾーンに基づいてUTC時間を現地時間に変換するようなものは、アプリレイヤーの場合とは異なり、データベースではうまく機能しない可能性があります。


オプティマイザに関する優れた点。
TML 2011年

2

通常、結果が集計(合計、平均、カウント)の場合、サーバーとクライアント間の不要な通信を回避することで、データベースサーバーでの計算がはるかに高速になります。また、順序付けとグループ化は、インデックスのメリットをもたらし、計算量を削減します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.